Templating в angular.js - наследование

как пользователь веб-фреймворка на стороне сервера (я использую Django), мне нравится, как организованы шаблоны. Заголовок страницы, css, js, верхний и нижний колонтитулы базового шаблона определяются как блоки и могут быть переопределены в дочерних шаблонах.

Что такое angular способ сделать это?

Содержимое каждой страницы, конечно, предоставляется в виде ng-view, кроме этого, я не могу много сделать. Тег заголовка, например, находится за пределами представления, и я не могу изменить его динамически.

Было бы неплохо дать мне пример кода полномасштабного проекта, чтобы увидеть, как организованы шаблоны. Большинство примеров проектов там небольшие и не нуждаются в наследовании в шаблонах.

Ответ 1

Django templating действительно приятный, но помните, что Angular в первую очередь предназначен для создания SPA (одностраничных приложений), поэтому он концептуально отличается. В типичном проекте Angular у вас будет своя база данных на стороне сервера, генерирующая базовый шаблон, тогда маршрутизация передается на Angular для всего остального, а разделы контента условно включаются на основе маршрутов.

Единственное, что у вас есть между шаблонами Django и Angular, - это директива ng-include, которая позволяет всасывать бит многоразового html. Но нет ничего похожего на систему Django {{block}} или {{block super}}.

Вы можете написать настраиваемую директиву, чтобы добавить дополнительный css/javascript, а не использовать {{extra extrahead}}.

Для динамических тегов заголовков вам необходимо убедиться, что ваш элемент управления установлен выше элемента head, иначе он будет недоступен и, следовательно, недоступен. Мы делаем это в базовом шаблоне:

<title data-ng-bind="title">Oursite</title>

И затем в контроллере для этого URL-адреса:

$rootScope.title = 'Dashboard | Oursite';

Другие предложенные подходы в этой теме.

Ответ 2

Взгляните на angular-blocks, который вдохновлен Jade, Handlebars и Django или более простым ng-layout.