Knockout.js, de bouw van grote, onderhoud, kan worden gebruikt voor het testen van de,,,,,,,,, Knockout.js delen, van 13 de,,,,,,, de delen van het netwerk, maandag wat in tuts + koers zal dalen tot slechts 3 dollar.Niet' niet missen.,, Knockout.js is een populaire, open - source (MIT) mvvm javascript kader creëren door Steve Anderson, Morgan.De website biedt enorme informatie - en toont aan hoe een eenvoudige toepassing, maar er is helaas geen grote aanvragen om dat te doen.Laten we de gaten te vullen.,,,, en en eisen. Js, en is een javascript module formaat, en een van de meest populaire, zo niet de meeste) is de lijst van de https://twitter.com/jrburke http://requirejs.org.Het bestaat uit twee globale functie, vereisen (), "(), require.js, hoewel ook een start javascript dossiers, zoals de heer. Js, < script src = 'J' s /nodig. De belangrijkste gegevens = 'J' s versie van" /"> < /scripts /GT; de belangrijkste zijn, twee require.js: vanille, require.js, documenten en een goede (moeten),).Natuurlijk, dat vooral wordt gebruikt voor de belangrijkste functie van de website.De toevoeging van een dossier naar je pagina 's, je kan de volgende code toevoegen aan je, main.js, om de gevraagde documenten (['], https://twitter.com/jrburkeapp "functies (App) {'). (;)), vereisen (), die gewoonlijk worden gebruikt voor de main.js, functie, documenten, maar kan Je het gebruiken rechtstreeks met een module van overal in de wereld.Het aanvaarden van twee parameters: een lijst van de afhankelijkheid en een functie als de afhankelijkheid van alle tijdens het laden is voltooid, de uitvoering en de auditie, doorgegeven aan het call - back - functies zijn in deze installatie in het doel, dit is heel belangrijk, het is asynchroon.Niet alle bibliotheken zijn en verenigbaar met de require.js, maar het biedt een mechanisme van deze soorten bibliotheken, pakkingen, ze kunnen laden, nodig is deze code van toepassing op modules,,, kan deze als volgt gedefinieerd:, (["." en "ko"], functionele ($, KO) {var het programma = functie () {}; app.prototype.init = functie) (///////- alle dingen terug te keren naar de app (};);});,, "(), de functie van de doelstelling is de definitie, de module.Het aanvaarden van drie parameters: de naam van de module (meestal niet met), een lijst en afhankelijk van een functie.En "(), kan je de afzonderlijke programma 's in veel van de module, elk met een specifieke functie.Het bevorderen van de scheiding van de ontkoppeling en de problemen, omdat elke module hebben een eigen specifieke taken, het gemeenschappelijk gebruik van Knockout.js en require.js, knock - out is en klaar, het zich als een anonieme module.Je moet niet alleen het pakking; met inbegrip van op je pad.De meeste en klaar voor de knock - out - lijst voor de "knock - out" in plaats van "hoge", maar gebruik je waarde, moet de configuratie ({weg: {ke: "de leverancier /knock - out van de" post "leverancier van postdiensten: /", benadrukt: "benadrukt dat De leverancier /mensen" en "van de leverancier /versterkt: uitbreiding: {"), of op de uitvoer: "_: {"), versterking van de "uitbreiding": de uitvoer: {}}, URL: "J 's"}); en de Top van dit deel van de code, is de belangrijkste.Weg, de definitie van een gemeenschappelijke module voor de optie van de kaart, de kaart met een sleutel van de naam te definiëren, in plaats van gebruik te maken van het hele dossier.,, pakkingen, opties met de definitie van een trefwoord, pad, kunnen er twee speciale band noemen, de uitvoer, de,.Op de uitvoer, de definitie, de uniforme module terug, en afhankelijk van andere modules, afhankelijk van de definitie van module kan behouden.Bijvoorbeeld: verificatie van de pakking kan als volgt: ///////, pakking: {... "Verificatie: de ") {". ": []}}, één en bladzijden van de aanvraag, met inbegrip van een enkele pagina 's die nodig zijn voor de toepassing van alle javascript heel vaak.Dus, je kan de definitie van initiële toewijzing en toepassing van een enkele pagina 's, main.js, zoals: moet de configuratie ({weg: {ke: "de leverancier /knock - out van de" post "leverancier van postdiensten: /", benadrukt: "benadrukt dat de leverancier /mensen" en "van De leverancier /vergroot:").: {ke: {uitvoer: "ko"), op de uitvoer van: "_: {"), versterking van de "uitbreiding": de uitvoer: {}}, URL: "J' s"}); eisen (['], https://twitter.com/jrburkeapp "functies (App) {'). (;), u) misschien moet ook een aparte pagina, niet alleen een specifieke module, maar de module te delen.James Burke heeft twee opslagplaats uitvoering van dit soort gedrag, het artikel dat je de man is de opbouw van een multi - pagina 's van toepassing is.Ik zal noemen, main.js,, common.js, met inbegrip van de noodzakelijke, require.config, in het voorbeeld van de documenten.Dit is puur semantiek, nu ik het nodig heb, common.js, mijn dossier, zoals dit script src = <:, 'J' s /moet dit js "> < /scripts > < script> eisen ([" gewone "]. //////////js, functie () {/gewone die is van de URL //////////Roman kan verzoeken de procedure hier niet" JS /aanvragen /eisen (["pagina 's /index"]);}); < /scripts > < /body > < /html > require.config,,, de uitvoering van de taken, moeten bepaalde pagina' s van de belangrijkste documenten.Pagina 's /- index, de belangrijkste documenten kunnen als volgt:, eisen (["app", de "post", de "hoge", "programma' s /indexviewmodel"], functionele (App, postdiensten, ko, indexviewmodel) {window.app = programma; window.postal = postdiensten; ko. ApplyBindings (nieuwe indexviewmodel ());});,, blz. /index module is nu verantwoordelijk voor het laden van de code, alle nodige /index.html blz.Je kan de andere belangrijkste bestanden toe te voegen aan de pagina 's van de gids, die ook verantwoordelijk is voor het laden van de relevante modules.Dit kan je brak de pagina 's van toepassing in kleinere stukken, en tegelijkertijd onnodige script bevat (bijvoorbeeld javascript. /index.html in, about.html, blz.), en het voorbeeld van toepassing, we schrijven een voorbeeld van de toepassing van het gebruik van deze methode.Het geeft een lijst van de merken van bier kan zoeken, laten we door te klikken op hun naam, kies je favoriet.Hier is de app's folder, laten we eerst kijken structure:,, /index.html http: //europa.eu.int markup:, 's, < artikel = "grote" > < 2 = "CONTAINER" > < de vorm van de klas van' Search "data-bind=" submit: doSearch "> - = < de tekst" naam "Search" placeholder= "data-bind=" onderzoek ": zoeken, valueUpdate:'afterkeydown'" /> < ul data-bind= "foreach: beerListFiltered" > < li data-bind= ": de naam, de: $parent.addToFavorites" > < /li> < /ul> < /form> < aan = "veilig" > < h3> Favorites< /h3> < ul data-bind= "foreach: veilig" > < li data-bind= ": de naam, de $parent.removeFromFa:Vorites "> < /Lee > < /UL > < /kant > < /dag > < /dag > <.Invoer ("model /lijst. Http: //europa.eu.int /") - > < script src = 'J' s /nodig: J 's "> < /scripts > < script> eisen ([" gewone "]. ///, (gewone) {/////////gemeenschappelijke set URL' s is JS //////////Roman kan verzoeken de procedure hier niet" JS /aanvragen /eisen (["pagina 's /index"]);}); < /scripts >, pagina' s, we de toepassing van de structuur van de pluraliteit van de pagina "of" power "een pagina 's, gids.Deze afzonderlijke pagina 's is verantwoordelijk voor de in de aanvraag -, programma' s, elke pagina., is verantwoordelijk voor het opzetten van een knock - out, bindende procedure, dossiers, met name de toepassing van de logica van Knockout.js woont.Bijvoorbeeld, indexviewmodel, dat er zoiets als dit: ///////https://github.com/jcreamer898/nettutsknockout/blob/master/lib/js/viewmodels/indexviewmodel.js, de definitie van "([ko", "" ", de" post ", de" model /bier "," model /baseviewmodel "," delen /bus "], functionele (ko, _, postdiensten, bier, baseviewmodel, bus) {VAR indexviewmodel = = = = = = = = = = = = this.beers functie) ([...]; this.search ="; baseviewmodel. Toepassing van dit argument);}; _. Verlengd (indexviewmodel.prototype, baseviewmodel.prototype {gestart: functie) (///////...}, filterbeers:function () {/*...* * * * * * * /}, analytische: functie (bier) {/*...(*} {*), setupsubscriptions:function...(*} {*), addtofavorites:function...(*} {*), removefromfavorites:function...* *}}); terug naar indexviewmodel;});,, indexviewmodel, de definitie van de verschillende fundamentele vertrouwen op de Top van het dossier heeft de baseviewmodel, zullen hun leden, Knockout.js kan worden waargenomen (bespreken we binnenkort), is de volgende stap, in plaats van de definitie van de functies van leden van verschillende standpunten een model is, onderstreept. De uitbreiding van de, (), uitbreiding van de taken van het prototype, indexviewmodel, de aard van de gegevens, geërfd en gedrag. Het is een code voor hergebruik, laat je niet van het functioneren van de aard van het voorwerp van de overeenkomst tussen de functie van hergebruik.Dus, is het nuttig een definitie van een model is gebaseerd, of andere modellen kunnen erven.In ons geval, ons model is gebaseerd, baseviewmodel, baseviewmodel = functie: var (facultatief) {dit. _setup (facultatief); deze gestart. Tel. (deze optie);}; _. Verlengd (baseviewmodel.prototype {gestart: functie () {}, _setup: functie (facultatief) {var de pijler; opties
Een grote, kunnen handhaven, kunnen worden gebruikt voor het testen van de
Previous:In de ember.js: de volgende stappen
Next Page:De toepassing van