Was ist Knockout.js?
Knockout ist eine hervorragende JavaScript -Bibliothek, mit der Sie eine Benutzeroberfläche mit guter Anzeige- und Bearbeitungsfunktionen erstellen können. Zu jedem Zeitpunkt muss Ihr lokaler UI -Inhalt automatisch aktualisiert werden (abhängig von Änderungen des Benutzerverhaltens oder Änderungen in externen Datenquellen), kann KO einfach für Sie implementiert werden und ist sehr einfach zu warten.
1. DIAGRAMER DER KEINDERKATEGORY Relationship
Ii. Klassenverantwortung
2.1. Beobachtbar (normale Überwachungsobjektklasse)
Die interne Implementierung von Observable (andere ist eine Funktion):
1. Deklarieren Sie zuerst einen FN namens Observable (dies kann als Klasse bezeichnet werden)
2. Fügen Sie eine KO -einzigartige neueste Value -Eigenschaft hinzu, um den vom Parameter übergebenen Wert zu speichern
3. Wenn das native __Proto__ -Attribut unterstützt wird, verwenden Sie HasownProperty, um festzustellen, ob das Attribut vorhanden ist, um zu erben, und beurteilen Sie den __Proto__ -Code (in der Utils -Klasse).
var cansetPrototype = ({__Proto__: []} InstanceOf Array);
4. Die Init -Methode des FN -Attributs von Ko.SubscribeBable initialisiert das Observable (hauptsächlich fügt Abonnements und veröffentlichte verwandte Attribute hinzu).
5. Observable erbringt dann beobachtbare Attribute und Methoden (ObservableFn enthält die Ausführungsstrategien vor den Wertänderungen und nach den Wertänderungen).
// Prototyp für ObservablesVar ObservableFn = {'EqualityComparer': VALUTSAREPRIMITIVEInAneDequal, Peek: function () {return this [beobachtungselatestValue]; }, ValueHasMutated: function () {this ['NotifysubScriptions'] (this [beobachtungselatestValue]); }, ValueWillmutate: function () {this ['NotifysubScribenten'] (this [beobachtungselatestValue], 'BeforeChange'); }};6. Geben Sie die Implementierung der beobachtbaren Methode zurück (wenn die eingehenden Parameter festgelegt sind und wenn es keinen Parameter gibt, wird erhalten).
7. Diese Klasse bietet auch einen HasPrototyp (um festzustellen, ob die angegebene Instanz diese Eigenschaft hat), isObservable (um festzustellen, ob die angegebene Instanz ein Überwachungsobjekt ist), ist geschrieben, um zu bestimmen, ob es sich um ein beschreibbares Überwachungsobjekt handelt).
2.2. Beobachtung (Array -Überwachungsobjektklasse)
1. Führen Sie zunächst die Ko.Observable -Methode aus, um sein Objekt zu einer Überwachungsklasse (benannt Ergebnis) zu machen.
2. Erweitern Sie dann das FN-Objekt in Ko.observablearray (Ko.OBServablearray's Fn schreibt die Array-bezogenen Betriebsmethoden wie Entfernen, Push usw. um) um.)
3. Erweitern Sie eine Methode durch Erweiterung (Trackarraychanages, siehe 2.5 für Einzelheiten)
V.
ko.observablearray = function (initialvalues) {initialValues = initialValues || []; if (typeof initialvalues! result.extend ({'TrackArraychanges': true});};2.3. Abonnieren (Objektklasse abonnieren)
1. Funktionsmodule zum Abonnieren und Veröffentlichen sind wesentliche Basisklassen für beobachtbares und beobachtungsschild.
2. Hier gibt es eine abonnemente Methode, mit der Änderungen der Überwachungsobjekte abonniert werden. Für die Entwicklung können Sie diesen Vererbungspunkt zum Eingeben verwenden.
Abonnieren Sie: Funktion (Callback, CallbackTarget, Ereignis) {var self = this; Event = Ereignis || DefaultEvent; var bandcallback = callbackTarget? callback.bind (callbackTarget): callback; var subcription = new Ko.SubScription (selfcallback, function () {ko.utils.arrayremoveItem (selfcallback), subScriptions [Ereignis], Abonnement); if (self.AftersubscriptionRemove) SelfSubsubsscriptionremove (Ereignis);}; .3.Ettend: Diese Methode wird verwendet, um die Erweiterungsklasse hinzuzufügen, die nach der Erweiterungsmethode hinzugefügt wurde (z.
4. Die Methode der Erweiterung der Erweiterung wird unmittelbar nach der Registrierung des Überwachungsobjekts ausgeführt. Die übergebenen Parameter sind Ziel (aktuelles Objekt) und Optionen (Parameter übergeben, wenn die Erweiterung aufgerufen wird)
5.Extend ist die Methode zur Installation der Erweiterung und wird den Code sofort in der Erweiterung ausführen.
2.4. Erweitert (erweiterte Überwachungsobjektklasse)
1.Kos Standard -Erweiterungssammlung
2. Geben Sie eine Methode für ApplyExtens -Methoden zur Installation der Erweiterung an
Funktion applyextenders (RequesteDeTeUnDers) {var target = this; if (requestedEttenders) {ko.utils.Objectforeach (RequestedEttenders, Funktion (Schlüssel, Wert) {var ExtenderHandler = Ko.Extenders [Key]; if (Typeof ExtenderHandler == 'Funktion') {Target.2.5. Beobachtungsabschluss.Changetracking (eine spezifische Implementierung des erweiterten Überwachungsobjekts)
1. Diese Erweiterung implementiert hauptsächlich die Überwachung von Array -Änderungen, berechnet dann die Unterschiede im Array und löst die damit verbundenen Abonnementereignisse aus
2.CacheDiffforknownoperation: Cache -Operationen auf Arrays für den Vergleich von Differenzen
3.. BeforeSubScriptionAdd und AftersubScriptionRemove -bezogene Abonnements (noch nicht vollständig verstanden).
Die oben genannte ist eine eingehende Analyse der vom Editor vorgelegten Knockout-Quellcodeanalyse. Ich hoffe, es wird Ihnen hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird Ihnen rechtzeitig antworten. Vielen Dank für Ihre Unterstützung auf der Wulin.com -Website!