Knockout.js gebruikt een Model-View-ViewModel (MVVM) ontwerppatroon, dat een variant is van het klassieke Model-View-Controller (MVC) patroon. Zoals in het MVC-patroon, de model- zijn uw opgeslagen gegevens en de uitzicht is de visuele weergave van die gegevens. Maar in plaats van een controller gebruikt Knockout.js een ViewModel als tussenpersoon tussen het model en het uitzicht.
Het ViewModel is een JavaScript-weergave van de modelgegevens, samen met bijbehorende functies voor het manipuleren van de gegevens. Knockout.js creëert een directe verbinding tussen het ViewModel en de weergave, waarmee het wijzigingen in de onderliggende gegevens kan detecteren en de relevante aspecten van de gebruikersinterface automatisch kan bijwerken..
Figuur 5: Het ontwerppatroon Model-View-ViewModelDe MVVM-componenten van ons winkelwagenvoorbeeld zijn als volgt opgelijst:
Knockout.js gebruikt observabelen om de eigenschappen van een ViewModel te volgen. Conceptueel werken waarneembare net zoals normale JavaScript-variabelen, maar laten ze Knockout.js waarnemen hun wijzigingen en update automatisch de relevante delen van de weergave.
Figuur 6: Observables gebruiken om ViewModel-eigenschappen bloot te leggenAlleen waarneembare items blootstellen de eigenschappen van een ViewModel. Om een gebruikersinterfacecomponent in de weergave te verbinden met een bepaalde waarneembare, moet dat binden een HTML-element erin. Nadat een element aan een waarneembaar element is gekoppeld, is Knockout.js klaar om automatisch wijzigingen in het ViewModel weer te geven.
Figuur 7: Een gebruikersinterfacecomponent binden aan een waarneembare eigenschapKnockout.js bevat verschillende ingebouwde koppelingen die bepalen hoe het waarneembare in de gebruikersinterface wordt weergegeven. Het meest gebruikelijke type binding is om eenvoudig de waarde van de waargenomen eigenschap weer te geven, maar het is ook mogelijk om het uiterlijk ervan onder bepaalde voorwaarden te wijzigen of om een methode van het ViewModel aan te roepen wanneer de gebruiker op het element klikt. Al deze use-cases worden tijdens de volgende lessen behandeld.
Het ontwerppatroon van Model-View-ViewModel, observabelen en bindingen vormen de basis voor de Knockout.js-bibliotheek. Zodra je deze concepten begrijpt, is het leren van Knockout.js eenvoudig een kwestie van uitzoeken hoe je waarnemingen kunt benaderen en manipuleren via de verschillende ingebouwde bindingen. In de volgende les zullen we onze eerste concrete blik op deze concepten leggen door een eenvoudige "Hello, World!" -Toepassing te bouwen.
Deze les vertegenwoordigt een hoofdstuk van Knockout bondig, een gratis eBoek van het team van Syncfusion.