#angularjs
#angularjs
Вопрос:
Я хочу генерировать статический html с использованием директив Angular 1 для различных вариантов использования. Например:
<div>
Name: <span ng-bind="name"></span>
</div>
<div ng-if="phone">
Phone: <span ng-bind="phone"></span>
</div>
учитывая {name: "John"}
, как $scope
должен генерироваться следующий html:
<div>
Name: <span>John</span>
</div>
Обратите внимание на отсутствие угловых директив и угловых комментариев ng-if. Возможно ли что-то подобное с Angular 1?
ОБНОВЛЕНИЕ: я хочу использовать движок шаблонов angular для создания статического, неинтерактивного html. Подумайте о шаблонах подчеркивания или движках шаблонов на стороне сервера. Вариант использования — генерировать фрагменты html, которые пользователь может использовать в своем собственном неугловом приложении. Другим вариантом использования было бы собрать статическое html-электронное письмо из шаблона angular. Все это делается без участия сервера. Angular уже позволяет вам это сделать, но он оставляет все свои артефакты в html, которые, очевидно, не нужны для моего варианта использования. Это не неэффективно, как говорили некоторые комментаторы, на самом деле это довольно эффективно, чтобы иметь возможность генерировать html без серверной части и использовать и без того мощный движок шаблонов angular.
Комментарии:
1. @charlietfl на самом деле, это неверно. он хочет сделать что-то вроде рендеринга на стороне сервера, но в этот момент вы теряете преимущества, которые дает вам angular, поэтому это кажется довольно глупым.
2. angular запускается в браузере, поэтому на самом деле непонятно, что вы пытаетесь сделать
3. Я пытаюсь сгенерировать статический html на стороне клиента без использования сервера. Вариант использования заключается в том, что пользователь заполняет форму и взамен получает html (например, код для встраивания), который он может скопировать, который отображает его данные в презентабельном формате. Это правильно, используйте его как движок рендеринга на стороне сервера. Я полностью осознаю, что теряю преимущества динамической природы angular, поэтому я сказал static html. Но я использую мощные директивы angular для генерации нужного мне html.
4. Да, это возможно. И да, это крайне неэффективно. И вы теряете ценную функцию других движков шаблонов, которые могут отображаться как на стороне клиента, так и на стороне сервера (и не ограничиваются JS на стороне сервера).
5. но в том-то и дело, что Angular не является движком шаблонов. Это структура привязки данных. удаление всех артефактов angular нарушает двустороннюю привязку фреймворка. Даже «одноразовые привязки» отслеживают angular, хотя бы для того, чтобы убедиться, что они действительно не обновляются более одного раза. Это вообще не то, для чего angular когда-либо разрабатывался. Это может быть что-то, что вы можете предложить в качестве улучшения Angular2, но маловероятно, что на данный момент Angular1 когда-либо будет переработан для такого рода функций.
Ответ №1:
Нет. Angular разработан для работы на стороне клиента. Следовательно, вы не можете использовать его на стороне сервера для создания шаблонов.
Вместо этого вы могли бы попробовать ejs — embedded js для создания шаблонов. Это намного проще и служит в качестве движка шаблонов.
Проверьте веб-сайт EJS
Ответ №2:
Angular не был разработан для этого, потому что это не движок шаблонов, это гораздо больше.
Для этого нет встроенного способа. Лучше всего было бы удалить все ng
атрибуты, угловые классы и угловые комментарии и, возможно, некоторые элементы тоже. Я лично не стал бы этого делать.