Ich habe ein Routen-Setup wie folgt:
var myApp = angular.module('myApp', []).
config(['$routeProvider', function ($routeProvider) {
$routeProvider.
when('/landing', {
templateUrl: '/landing-partial',
controller: landingController
}).
when('/:wkspId/query', {
templateUrl: '/query-partial',
controller: queryController
}).
otherwise({
redirectTo: '/landing'
});
}]);
Ich möchte in der Lage sein, Angularjs dazu zu bringen, beide Partials am Anfang und nicht auf Anfrage herunterzuladen.
Ist es möglich?
<script>
Tag zusammen mit serverseitigen Includes. Auf diese Weise kann ich meine Partials aus organisatorischen Gründen als separate Dateien aufbewahren, aber dennoch alles in einem Dokument bereitstellen.Wenn Sie Grunt zum Erstellen Ihres Projekts verwenden, gibt es ein Plugin, das Ihre Partials automatisch zu einem Angular-Modul zusammenfügt, das $ templateCache vorbereitet. Sie können dieses Modul mit dem Rest Ihres Codes verketten und beim Start alles aus einer Datei laden.
https://npmjs.org/package/grunt-html2js
quelle
grunt-angular-templates
was das Gleiche tut - npmjs.org/package/grunt-angular-templates - funktioniert ein VergnügenFügen Sie eine Build-Aufgabe hinzu, um Ihre HTML-Partials im Angular zu verketten und zu registrieren
$templateCache
. ( Diese Antwort ist eine detailliertere Variante von Karlgolds Antwort. )Für Grunzen , verwenden Grunzen-Winkel-Vorlagen . Verwenden Sie für gulp gulp-angle-templatecache .
Unten finden Sie Konfigurations- / Code-Schnipsel zur Veranschaulichung.
gruntfile.js Beispiel:
gulpfile.js Beispiel:
templates.js (diese Datei wird von der Build-Task automatisch generiert)
index.html
quelle
Wenn Sie jede Vorlage in ein Skript-Tag einschließen, z.
Verketten Sie alle Vorlagen zu einer großen Datei. Wenn Sie Visual Studio 2013 verwenden, laden Sie Web Essentials herunter. Es wird ein Kontextmenü hinzugefügt, um ein HTML-Bundle zu erstellen.
Fügen Sie den Code hinzu, den dieser Typ geschrieben hat, um den Winkeldienst zu ändern
$templatecache
- es ist nur ein kleines Stück Code und es funktioniert: Vojta Jinas KernEs ist das
$http.get
, was geändert werden sollte, um Ihre Bundle-Datei zu verwenden:Ihre Routen
templateUrl
sollten folgendermaßen aussehen:quelle
Wenn Sie Rails verwenden, können Sie mithilfe der Asset-Pipeline alle Ihre haml / erb-Vorlagen kompilieren und in ein Vorlagenmodul verschieben, das an die Datei application.js angehängt werden kann. Kasse http://minhajuddin.com/2013/04/28/angularjs-templates-and-rails-with-eager-loading
quelle
Ich
eco
mache den Job nur für mich.eco
wird standardmäßig von Sprockets unterstützt. Es ist eine Abkürzung für Embedded Coffeescript, bei der eine Öko-Datei in eine Javascript-Vorlagendatei kompiliert wird. Die Datei wird wie alle anderen JS-Dateien behandelt, die sich in Ihrem Assets-Ordner befinden.Alles, was Sie tun müssen, ist, eine Vorlage mit der Erweiterung .jst.eco zu erstellen und dort HTML-Code zu schreiben. Rails kompiliert und liefert die Datei automatisch mit der Assets-Pipeline. Der Zugriff auf die Vorlage ist sehr einfach:
JST['path/to/file']({var: value});
wopath/to/file
basiert auf dem logischen Pfad. Wenn Sie also eine Datei haben/assets/javascript/path/file.jst.eco
, können Sie unter auf die Vorlage zugreifenJST['path/file']()
Damit es mit anglejs funktioniert, können Sie es anstelle von templateDir an das Template-Attribut übergeben, und es funktioniert auf magische Weise!
quelle
Sie können $ state an Ihren Controller übergeben. Wenn die Seite geladen und der Getter im Controller aufgerufen wird, rufen Sie $ state.go ('index') oder einen beliebigen Teil auf, den Sie laden möchten. Getan.
quelle
Eine andere Methode ist die Verwendung von HTML5 Application Cache zum Download alle Dateien einmal und halten sie in den Cache des Browsers. Der obige Link enthält viel mehr Informationen. Die folgenden Informationen stammen aus dem Artikel:
Ändern Sie Ihr
<html>
Tag so, dass es einmanifest
Attribut enthält:Eine Manifestdatei muss mit dem MIME-Typ bereitgestellt werden
text/cache-manifest
.Ein einfaches Manifest sieht ungefähr so aus:
Sobald eine Anwendung offline ist, bleibt sie zwischengespeichert, bis eine der folgenden Aktionen ausgeführt wird:
quelle