Saya memiliki pengaturan rute seperti ini:
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'
});
}]);
Saya ingin dapat membuat angular untuk mengunduh parsial di awal dan bukan saat diminta.
Apa itu mungkin?
<script>
tag inline bersama dengan server-side include. Ini memungkinkan saya menyimpan sebagian saya sebagai file terpisah untuk tujuan organisasi, tetapi tetap memberikan semuanya dalam satu dokumen.Jika Anda menggunakan Grunt untuk membangun proyek Anda, ada sebuah plugin yang secara otomatis akan merakit parsial Anda menjadi modul Angular yang menawarkan $ templateCache. Anda dapat menggabungkan modul ini dengan sisa kode Anda dan memuat semuanya dari satu file saat startup.
https://npmjs.org/package/grunt-html2js
sumber
grunt-angular-templates
yang melakukan hal yang sama - npmjs.org/package/grunt-angular-templates - berfungsi dengan baikTambahkan tugas build untuk menggabungkan dan mendaftarkan parsial html Anda di Angular
$templateCache
. ( Jawaban ini adalah varian jawaban karlgold yang lebih rinci . )Untuk grunt , gunakan grunt-angular-templates . Untuk tegukan , gunakan tegukan-angular-templatecache .
Berikut cuplikan konfigurasi / kode untuk diilustrasikan.
Contoh gruntfile.js:
Contoh gulpfile.js:
templates.js (file ini dibuat secara otomatis oleh tugas build)
index.html
sumber
Jika Anda membungkus setiap template dalam tag skrip, misalnya:
Gabungkan semua template menjadi 1 file besar. Jika menggunakan Visual Studio 2013, unduh Web esensial - ia menambahkan menu klik kanan untuk membuat Bundel HTML.
Tambahkan kode yang ditulis orang ini untuk mengubah
$templatecache
layanan sudut - hanya sepotong kecil kode dan berfungsi: Vojta Jina's GistItu
$http.get
yang harus diubah untuk menggunakan file bundel Anda:Rute Anda
templateUrl
akan terlihat seperti ini:sumber
Jika Anda menggunakan rel, Anda dapat menggunakan pipa aset untuk mengkompilasi dan mendorong semua templat haml / erb Anda menjadi modul templat yang dapat ditambahkan ke file application.js Anda. Checkout http://minhajuddin.com/2013/04/28/angularjs-templates-and-rails-with-eager-loading
sumber
Saya hanya menggunakan
eco
untuk melakukan pekerjaan untuk saya.eco
didukung oleh Sprockets secara default. Ini adalah singkatan untuk Embedded Coffeescript yang mengambil file eco dan mengkompilasi ke file template Javascript, dan file tersebut akan diperlakukan seperti file js lain yang Anda miliki di folder aset Anda.Yang perlu Anda lakukan adalah membuat templat dengan ekstensi .jst.eco dan menulis beberapa kode html di sana, dan rel akan secara otomatis mengkompilasi dan menyajikan file dengan pipa aset, dan cara mengakses templat itu sangat mudah: di
JST['path/to/file']({var: value});
manapath/to/file
didasarkan pada jalur logis, jadi jika Anda memiliki file/assets/javascript/path/file.jst.eco
, Anda dapat mengakses template diJST['path/file']()
Untuk membuatnya berfungsi dengan angularjs, Anda bisa meneruskannya ke atribut template alih-alih templateDir, dan itu akan mulai bekerja secara ajaib!
sumber
Anda dapat melewatkan $ state ke controller Anda dan kemudian ketika halaman memuat dan memanggil getter di controller Anda memanggil $ state.go ('index') atau bagian apa pun yang ingin Anda muat. Selesai
sumber
Metode lain adalah dengan menggunakan Cache Aplikasi HTML5 untuk mengunduh semua file sekaligus dan menyimpannya di cache browser. Tautan di atas mengandung lebih banyak informasi. Informasi berikut berasal dari artikel:
Ubah
<html>
tag Anda untuk menyertakanmanifest
atribut:File manifes harus disajikan dengan tipe mime
text/cache-manifest
.Manifes sederhana terlihat seperti ini:
Setelah aplikasi offline, aplikasi ini tetap di-cache hingga salah satu dari yang berikut terjadi:
sumber