При рендеринге приложения angularjs загружаются частичные файлы с веб-сервера или из браузера. Когда я пытаюсь отлаживать использование firebug, я могу увидеть запрос, сделанный на веб-сервер для файла частичных файлов html. Мое предположение заключается в том, что частичный файл всегда запрашивается с веб-сервера. Правильно ли я понимаю?
Кроме того, есть ли способ, в котором браузер загружает все данные приложения html в браузер и затем загружает частичные файлы из браузера без какого-либо сетевого вызова? Возможно ли это, и есть ли возможность сделать это в AngularJs? Пожалуйста, дайте мне знать.
Когда вы запрашиваете угловую страницу "smth/smth2.html", сначала проверяете, находится ли этот шаблон в $ templateCache, если он не представлен. HTTP-запрос сделан. Если он будет загружен с сервера или из кеша браузера, зависит от заголовков страниц - по умолчанию он будет загружен из кеша, если он представлен. После того, как шаблон запроса добавлен в templateChache.
Таким образом, правильный способ загрузки всех шаблонов сразу заключается в том, чтобы поместить их в $ templateCache.
Вы можете сделать это напрямую (так что у вас не будет *.html файлов), или вы можете использовать инструменты для создания своего проекта, т.е. Grunt. (Инструмент преобразует ваши файлы *.html в *.js)
Пример - то, что мы имеем в нашем проекте:
index.html app.js page.html
где в app.js у вас есть app.state('page', templateUrl: 'page.html')
Если пользователь нажмет F5: шаблонCache будет очищен, index.html будет перезагружен с сервера, app.js будет перезагружен с сервера, page.html будет перезагружен с сервера или из кеша браузера в зависимости от заголовков страниц и браузера.
index.html app.js
где в app.js у вас есть app.state('page', templateUrl: 'page.html')
и app.module(...).run(function($templateCache.put("'page.html'", "<div>...</div>")))
Конечно, вы не хотите хранить все ваши html-шаблоны в одном файле - поэтому, чтобы перейти от 1 до 2, вы используете grunt.
NB: запросы для index.html и app.js могут быть кэшированы браузером, добавив правильные заголовки в index.html и число в app.js, исключает это. Итак, в конце, когда вы проверяете исходные файлы своего сайта в браузерах, вы хотите увидеть:
- index.html
- приложение. # uniquecode #.js
- angular.js
Когда вы запрашиваете страницу в приложении angularjs, первый угловой момент делает запрос и веб-сервер отправляет страницу (html, js и изображения) в браузер с кодом ответа 200. Во второй раз, если ничего не изменилось, ответ сервера с кодом ответа 304, не отправлять страницу и страницу загрузки браузера из кеша, поэтому для загрузки каждого частичного представления вам нужен только один запрос на сервер. Вы можете проверить его на вкладке сети инструментов разработчика браузера. В производственной среде, кроме того, ворчание позволяет минимизировать время загрузки html, javascript и css.
from the browser
? Кеш?