, ga je eigen kader van een praktisch voorbeeld:,,,,,,,,,, 163, 19 - eenheid,,,,,,,, de delen van het netwerk, maandag wat in tuts + koers zal dalen tot slechts 3 dollar.Niet' dit artikel niet missen, is een reeks genaamd "ga je eigen kader. Ga je eigen kader, in het eerste deel van de serie, bespreken we de vergadering, het toestaan van het gebruik van het beheer van de verschillende aspecten van de acties, en hoe het nieuws, Milo, in dit verslag. De artikelen, en we zullen zien in de ontwikkeling van de browser toepassing van een ander probleem: in verband met de mening van het model.We zullen haar magie te binden in de gegevens in twee richtingen kunnen Miro, en van de inhoud van de verpakking, zullen we de oprichting van een volledig functionele in minder dan 50 lijnen van de code van toepassing is,., model (of evaluatie niet kwaad), een paar over javascript.Veel ontwikkelaars, de evaluatie van het kwaad is, dient niet te worden gebruikt.Deze overtuiging zal leiden tot tal van projectontwikkelaars niet kan zeggen wanneer de evaluatie kan en moet het gebruik van spreuken, net als ".,, evaluatie, is het kwaad" alleen destructief is, hebben we te maken met een aantal fundamentele instrumenten.Een van de instrumenten is gewoon "goed" of "slecht", gezien de context.Je zei dat het een hamer is niet slecht, toch?Het hangt ervan af hoe je het gebruikt.Als het met een spijker en wat meubels, "de hamer is goed '.Als je met je brood en boter, "de hamer is slecht.", en we zijn het erover eens dat de evaluatie, beperking van de risico 's (zoals de prestaties) en (met name als we de evaluatie van de code die door de gebruiker), in veel gevallen, is de evaluatie van de verwezenlijking van de beoogde functie. De enige manier, als voorbeeld, zoals vele model, motor met behulp van de evaluatie, binnen het kader van de operatie (een andere niet in de ontwikkelaars van) de opstelling van modellen voor javascript.,, als we goed nadenken over wat we willen van ons model, rekening te houden met de verschillende methoden van ons is.Een is een model, zoals de verandering van de ruggengraat van een model van het nieuws.Hoewel het gemakkelijk te bereiken. Deze modellen van beperkt nut – van het echte leven -, zijn wij van mening dat de diepe, eenvoudige javascript object, object.observe, API (dit zal een einde maken aan die nodig zijn voor de tenuitvoerlegging van een model).En we hebben alleen van toepassing is op object.observe met chroom, werk, die onlangs werd bij verstek was nodig om een browser - teken, waardoor de invoering en ondersteuning van moeilijkheden, en we hopen dat we kunnen verbinden met de standpunten van het model, maar op een manier die we kunnen veranderingen in de structuur van de mening niet veranderen in een code. Zonder wijziging van de structuur van het model, zonder expliciete beheer van mening - model in data model., hopen wij dat er ook met elkaar in verband met de modellen (zie var planning) en veranderingen in de wijze van inschrijving.Of aan de staten van de modellen van comparing. En dit wordt heel inefficient met grote, diepe, na een discussie, models., we besloten is dat wij ons - dat zou ik als klasse A of voor get/set API - en dat zou veel te manipulate allow subscribing aan veranderingen in:,, de VAR - M = nieuwe model; m ('.info.name'). ('angular'); console. Log (m ('.info'). ()); ///////logs: {name:'angular'} m.on ('.info.name', onNameChange); de functie onNameChange (MSG gegevens) {console. Log ('Name veranderd from', data.oldValue,'to', data.newValue);} m ('.info.name'). ('milo'); ///////logs: van naam veranderd van of naar Milo console. Log (m.get ()); ///////info: logs: {}} {naam:'milo'console. Log (m ('.info- "). ()); ///////logboek: {naam:" Milo "), de API, vergelijkbaar met de normale eigenschap toegang, zorgen voor een veilige toegang tot de prestaties – diepe, krijg, er is geen eigendom weg terug niet bevestigd, wanneer de set, bekend als het creëren van de vermiste voorwerpen, /boom - eisen, de API - worden gecreëerd. En voordat het te bereiken, vooral niet, we zien hoe het creëren van voorwerpen, kan ook een functie.In feite, het creëren van een fabrikant kan worden genoemd de voorwerpen terug, je moet terug naar de functie van de fabrikant, het vaststellen van de prototypes, model van een voorbeeld:,,, en de functie van het model (gegevens) {///////modelpath moet de terugkeer van een modelpath object Voor het verkrijgen van /////////het abonnement model is. Veranderingen in de eigenschappen, de modelpath, zoals de VAR - model = functie (weg) {terugkeer van nieuwe modelpath (model, het pad);} model. __proto__ = model.prototype; model. _data = gegevens; het model. _messenger = nieuwe boodschapper (model, boodschapper. Defaultmethods); regressiemodel} prototype. __proto__ __proto__ = model. __proto__;,,,,, de eigenschappen van een object is onsIn het algemeen is de beste willen voorkomen, is het nog steeds de wijziging van het doel van de fabrikant een prototype en het prototype, de enige manier om modelpath voorbeelden,.,, moet de terugkeer van het model van de genoemd (bijvoorbeeld m (". Informatie. Namen), hierboven) geeft een andere uitvoering van uitdagingen.De situatie is, modelpath, moeten voor de juiste attributen, model door het model, het heet (,. Info.name, in dit geval).Wij zijn van mening dat de tenuitvoerlegging van de analytische eigenschappen door eenvoudig de touwtjes in handen, de toegang tot deze eigenschap is, maar we beseffen dat dit zou leiden tot inefficiëntie van de prestaties.,, integendeel, we besloten op zo 'n manier worden uitgevoerd (", M. Informatie, zoals de naam), en De terugkeer van een voorwerp (bijvoorbeeld , modelpath, " soort "), de toegang voor alle methoden (,,,,,,, del, aansluiting, voor de synthese van javascript) omgezet in javascript met behulp van de evaluatie,.,, hebben we al deze synthese zijn eenmaal in gebruik, van een model. Info.name, dit " weg " eigenschap. En opnieuw kan worden gebruikt voor alle andere modellen voor de toegang tot de eerste uitvoering.,, de methode is die functie:,, algemeneHesizegetter (weg, parsedpath) {VAR ambitieus; de VAR - gettercode = "- functie) = VALUE (+ {\\ var m =" + modelaccessprefix +; n = m modeldataproperty terug ", var; (VAR i = 0, nummer = parsedpath.length-1; ik < Tel. + + + + + + + + M) {modeldataproperty parsedpath [M] =. Prestaties; gettercode + = modeldataproperty + & &"; gettercode + = + parsedpath modeldataproperty} [aantal]. + eigendom "; n);"; proberen {evaluatie (gettercode);} vangst (e) (de fout ('modelpath adem weg: "agent fouten; + + + + + + +" weg, code: "+ gettercode);}}, terug naar jullie,, maar de methode, het ziet er slecht uit, het is moeilijkNiet te volgen, te lezen en te handhaven, omdat het aantal onderbrekingen van de methode voor de vaststelling van de code is de code van de methode.Dus, we schakelen over naar de plaats van gebruik voor de toegang tot de methode van het template van de motor voor die code.,, dit is overgestapt naar het model, dotdef = {var, de lucht: modelaccessprefix: dit _model. _data "); - voor de functie van gettertemplate = = = = = = = VALUE () {\\ var m = {{# def.modelaccessprefix}}; \\ {{VAR modeldataproperty =" m ";}} {{\\ \\ terug (VAR i = 0, nummer = it.parsedpath.length-1; ik < tellen; I + +) (- modeldataproperty + = het. Parsedpath [I].}} {{goederen; - = modeldataproperty} {} & &} {} {} \\ \\ modeldataproperty}} {{{= = het. Parsedpath [aantal]. Bezittingen}}};"; gettersynthesizer = var. De opstelling van de functie (gettertemplate, dotdef);In de synthesizemethod (Synthesizer, pad, parsedpath) {var, methodcode = Synthesizer ({parsedpath:parsedpath} {evaluatie (); proberen methodcode); (e) {'} vangst ('modelpath voor fouten maken fouten, en zei: "de weg", de code: + + + methode voor de terugkeer van de methodcode);); de functie van synthesizegetter} (weg, parsedpath) {terug synthesizemethod (gettersynthesizer, pad, parsedpath);}, en dat is een goede methode.Laten we het de toegang tot alle methoden, laten we de code (,,,,,,, del, splitsen,) heel modulair en het onderhoud van de API, model vastgesteld. Dat is zeer nuttig gebleken en hoge prestaties.De ontwikkeling van een reeks elementen die tot ondersteuning van grammatica, bij wijze van installatie (en derivaten daarvan, zoals duwen, pop,, enz.), de toegang tot de eigendom van /project te extrapoleren, om te voorkomen dat de synthese van de laatste is, toegang tot de - (dit is zeer trage werking, De toegang tot de eigendom of de projecten) als enige niet met een onroerend goed is, of de doelstellingen van het project.Het als elementen van interne modellen moeten in het verkeer gebeurd, bijvoorbeeld,.,,, (VAR i = 0; ik < 100; I + +) {VAR mpath is = m (+ ". De lijst []. De naam"); de naam van de variabele = GET (); mpath is mpath is.. - (in hoofdletters (naam));}, bij elke stap, een modelpath, voorbeelden worden gecreëerd, de toegang tot en de bijwerking van de modellen van de reeks elementen die eigenschap.Alle voorbeelden zijn de verschillende eigenschappen van het pad, het uitgebreide gebruik van een factor 100 nodig van vier tot -, evaluatie -,.Dit is een zeer trage werking.,, interpolatie in dit voorbeeld en eigendom, toegang tot de tweede rij kan worden gewijzigd in:,, de VAR - mpath is = m ("[1]. De lijst van $. Naam, ik);,, het niet alleen lijkt leesbaarder en het is erg snel.Hoewel we nog steeds tot 100, modelpath, in deze cyclus zal delen, voor het geval ze allemaal dezelfde toegang tot de methode, zodat we de synthese van slechts vier 400.,, ben je welkom voor de raming van deze monsters, de verschillen tussen de planning, var. Observatie -, Milo, gebruik maken van de kennisgeving de planning van de tenuitvoerlegging van de verandering in de aard van de var.Dit is toegestaan ons te reageren als gegevens die met behulp van de volgende API:,, een cruciaal onderdeel van minder var = (m1,'< < < -> > > ", M2 ('.info'); //////////////creates bidirectionele reactieve verband tussen 1 en eigendom" - Info "van het model met de diepte van M2 ///////2 (eigenschappen en sub-properties van modellen zijn verbonden. ///////), zoals je kan zien, van boven de lijn, ModelPath, terug door, M2 ('.info'), moet het API - als het model, dat betekent dat heeft dezelfde messaging - als het model en ook is een function: var mPath = m (,,'.info); mPath ('.name'). ('"); ///////poperty heeft'.info.name'in m mPath.on ('.name', hetzelfde als onNameChange); ///////m ('.info.name'(*) Oké, hetzelfde als onNameChange) ///////m.on ('.info.name', onNameChange);Op dezelfde manier, kunnen we een model van een advies.Onderdeel (zie eerste deel van de serie) kan een gezicht als een API - gegevens, te dom alsof ze een model is.Het kan ook worden gebruikt in verband met de API - model niet, dus deze code, bijvoorbeeld in verband met een dom standpunt model:,, var - connector = (m, "< < < - > > >,,,,. Gegevens); Het wordt weergegeven in de hierna meer gedetailleerd de toepassing van de connector, steekproef, hoe het werkt?Onder de motorkap, de verbinding is de bron van gegevens in verband met de inschrijving van een van beide partijen, de bron van gegevens uit een andere bron van gegevens die verandering.De bron van gegevens is een model, het model van de weg, van de gegevens van de component, of enig ander object dat hetzelfde communicatie - modellen. De eerste is, en dat is heel eenvoudig:,, ///////ds ds - en die een bron van gegevens /patroon bevat de functie van de aansluiting van de richting en de verbinding met de diepte (ds, ds -) {VAR parsedmode = patroon (/^ (\\ < * * * * * * *) + (\\ \\ > * * * * * * *), /); _. Verlengd (dit wordt DS2:{DS1:DS2, mode, en: model, depth1:parsedmode [1] generaal depth2:parsedmode [2]. Lengte: dit valse}); (de). Op _;}. Extendproto (verbinding van sluiting:,, {}); de functies op het subscriptionpath = () {var. _subscriptionpath = nieuwe reeks (this.depth1
Ga je eigen kader van een praktisch voorbeeld:
Previous:De ontwikkeling van het gebruik van