Da die einzelnen Knockout-Vorlagen in Skript-Tags gespeichert sind, dachte ich, dass ich das Attribut src
des Tags festlegen und den HTML-Code aus einer separaten Datei laden könnte. So naiv zu arbeiten, hat einfach nicht funktioniert, also auch nicht
src
tag zu arbeiten, das ich verwenden muss (Die anderen beiden Möglichkeiten - 3, alle Programmierer in diesem Projekt werden erwartet, dass sie dieselbe gigantische Datei modifizieren, die beim Start vom Browser geladen wird, und 4, verwenden Sie Knockoutjs nicht für etwas Größeres als ein Spielzeugprojekt - ich halte das für gleichwertig.)
Ein Browser reagiert nicht auf src
auf irgendetwas, das einen anderen Typ als einen der verschiedenen 'javascript' Typen hat und mit denen versucht wird, das Ergebnis als Skript auszuführen.
Mehrere Optionen:
Wiederholen Sie die Skript-Tags, die Vorlagen enthalten, und laden Sie sie. So etwas würde den Inhalt mit dem src
als Speicherort abrufen. Sie müssen vorsichtig sein, wenn Sie applyBindings aufrufen, wenn Ihre Vorlagen nicht bereit sind.
Hier sind einige andere Optionen, die ich mir vor einiger Zeit angeschaut habe: Ссылка
Jede Vorlage in meinem Projekt ist eine eigene HTML-Datei. Ich verwende eine Namenskonvention (* .ko.html), um sie zu identifizieren. Meine Build-Kette geht so:
Schritt 1: Fusseln und minimieren Sie * .ko.html Dateien
Dies ist nur zum Entfernen von Kommentaren (außer <!-- ko -->
Einsen) und zum Entfernen zusätzlicher Leerzeichen für eine kompaktere Nutzlast.
Schritt 2: Zeichne und reduziere verkleinertes HTML in eine js-Datei. Die js sieht ungefähr wie
aus %Vor% Ich habe erwogen, eine html-Datei mit <script type="text/plain">
delimiters zu verketten, aber wähle js, weil es auf diese Weise mit einem einfachen <script>
-Tag anstelle eines Ajax get + inject geladen werden kann.
Schritt 3: Korrigieren Sie die native Vorlagen-Engine, um Vorlagen von meinem js-Objekt abzurufen.
%Vor%Meine Implementierung verwendet gruntjs, um diese Build-Schritte auszuführen. (grunt-contrib-htmlmin, grunt-contrib-concat)
Optionen für htmlmin:
%Vor%Optionen für concat
%Vor% Für jeden, der sich fragt, warum irgendjemand das machen möchte:
Vorlagenquelldateien sind standardisierte einzelne HTML-Dateien, die in einem beliebigen HTML-Editor bearbeitet werden können und die Quelle wird als solche gesteuert. Editieren von HTML innerhalb von <script>
tags ist kein Spaß. Als Bonus können Quelldateien Kommentare enthalten, die entfernt werden.
Vorlagen können auf jeder Seite wiederverwendet werden, indem das Skript-Tag eingefügt wird: Sie müssen nicht in jede Seite eingebunden werden.
Das resultierende Bundle ist eine statische Datei, die Browser einfach zwischenspeichern können, während Vorlagen, die in eine dynamisch generierte Seite eingebettet sind, dies nicht können.
Ziemlich genau die gleichen Gründe für die Bündelung von Javascript-Dateien.
Tags und Links knockout.js