Wie kombiniere ich Vorlagen aus verschiedenen HTML-Dateien

8

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

  1. Es gibt einen Trick, um die Bindung von Vorlagen mit src tag zu arbeiten, das ich verwenden muss
  2. Es gibt eine andere Möglichkeit, Vorlagen aus verschiedenen Dateien zu laden

(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.)

    
Malvolio 01.05.2012, 18:47
quelle

2 Antworten

11

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:

  • Verwenden Sie eine Vorlagen-Engine, die Vorlagen remote abrufen kann (die beste ist hier: Ссылка ) ).
  • 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.

    %Vor%
  • Hier sind einige andere Optionen, die ich mir vor einiger Zeit angeschaut habe: Ссылка

RP Niemeyer 01.05.2012, 19:14
quelle
1

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.

    
and... break 15.07.2015 22:05
quelle

Tags und Links