Tworzenie klienta JavaScript

Pobieranie ukończonego projektu

W tej sekcji utworzysz klienta dla aplikacji przy użyciu języków HTML, JavaScript i biblioteki Knockout.js . Utworzymy aplikację kliencą na etapach:

  • Wyświetlanie listy książek.
  • Wyświetlanie szczegółów książki.
  • Dodawanie nowej książki.

Biblioteka Knockout używa wzorca Model-View-ViewModel (MVVM):

  • Model jest reprezentacją danych po stronie serwera w domenie biznesowej (w naszym przypadku książki i autorzy).
  • Widok jest warstwą prezentacji (HTML).
  • Model widoku jest obiektem JavaScript, który przechowuje modele. Model widoku to abstrakcja kodu interfejsu użytkownika. Nie ma wiedzy na temat reprezentacji HTML. Zamiast tego reprezentuje abstrakcyjne funkcje widoku, takie jak "lista książek".

Widok jest powiązany z danymi z modelem widoku. Aktualizacje do modelu widoku są automatycznie odzwierciedlane w widoku. Model widoku pobiera również zdarzenia z widoku, takie jak kliknięcia przycisków.

Diagram przedstawiający serwer web A P I i model klienta J S O N połączone przez A J A X i Model widoku oraz Widok H T M L połączone przez powiązanie danych.

Takie podejście ułatwia zmianę układu i interfejsu użytkownika aplikacji, ponieważ można zmienić powiązania bez konieczności ponownego pisania kodu. Na przykład możesz wyświetlić listę elementów jako <ul>, a następnie zmienić ją później na tabelę.

Dodawanie biblioteki Knockout

W programie Visual Studio z menu Narzędzia wybierz pozycję Menedżer pakietów NuGet. Następnie wybierz pozycję Konsola menedżera pakietów. W oknie Konsola menedżera pakietów wprowadź następujące polecenie:

Install-Package knockoutjs

To polecenie dodaje pliki Knockout do folderu Scripts.

Tworzenie modelu widoku

Dodaj plik JavaScript o nazwie app.js do folderu Scripts. (W Eksplorator rozwiązań kliknij prawym przyciskiem myszy folder Scripts, wybierz polecenie Dodaj, a następnie wybierz pozycję Plik JavaScript). Wklej następujący kod:

var ViewModel = function () {
    var self = this;
    self.books = ko.observableArray();
    self.error = ko.observable();

    var booksUri = '/api/books/';

    function ajaxHelper(uri, method, data) {
        self.error(''); // Clear error message
        return $.ajax({
            type: method,
            url: uri,
            dataType: 'json',
            contentType: 'application/json',
            data: data ? JSON.stringify(data) : null
        }).fail(function (jqXHR, textStatus, errorThrown) {
            self.error(errorThrown);
        });
    }

    function getAllBooks() {
        ajaxHelper(booksUri, 'GET').done(function (data) {
            self.books(data);
        });
    }

    // Fetch the initial data.
    getAllBooks();
};

ko.applyBindings(new ViewModel());

W aplikacji observable Knockout klasa umożliwia powiązanie danych. Gdy zawartość obserwowalnej zmiany, obserwowalne powiadamia wszystkie kontrolki powiązane z danymi, aby mogły aktualizować się. (Klasa observableArray jest wersją tablicy obserwowalnej). Na początek nasz model widoku ma dwa możliwe do zaobserwowania:

  • books zawiera listę książek.
  • error zawiera komunikat o błędzie, jeśli wywołanie AJAX zakończy się niepowodzeniem.

Metoda getAllBooks wykonuje wywołanie AJAX w celu pobrania listy książek. Następnie wypycha wynik do tablicy books .

Metoda ko.applyBindings jest częścią biblioteki Knockout. Model widoku jest pobierany jako parametr i konfiguruje powiązanie danych.

Dodawanie pakietu skryptów

Tworzenie pakietów to funkcja w ASP.NET 4.5, która ułatwia łączenie lub łączenie wielu plików w jeden plik. Tworzenie pakietów zmniejsza liczbę żądań do serwera, co może skrócić czas ładowania strony.

Otwórz plik App_Start/BundleConfig.cs. Dodaj następujący kod do metody RegisterBundles.

public static void RegisterBundles(BundleCollection bundles)
{
    // ...

    // New code:
    bundles.Add(new ScriptBundle("~/bundles/app").Include(
              "~/Scripts/knockout-{version}.js",
              "~/Scripts/app.js"));
}