2016-04-03 2 views
2

Я новичок node.js. Мне нужно создать динамический js-вывод во время выполнения, от статических фрагментов и от данных, собранных сервером, с блоками управления с использованием данных сервера. В DOT NET я использовал T4 для достижения этого, но мне кажется, что все движки шаблонов node.js знают, как создавать HTML. Существует ли эквивалент T4 для node.js, например. который может выводить обычный текст, который не является HTML, и использует блоки управления сервером?T4 эквивалент для node.js

+0

Шаблонный движок не привязан к одному типу файла. Быстрый поиск дал мне [усы] (https://github.com/janl/mustache.js) (только для замены переменных) и [nunjucks] (https://mozilla.github.io/nunjucks/) (логические блоки, наследование и некоторые другие интересные вещи). – Shanoor

+0

@ShanShan, я думаю, что ваш комментарий не совсем корректен, посмотрите, например, на узел-лезвие и все модули на основе haml.js, такие как jade и haml-coffee. Они явно знают, как разбирать html-директивы для генерации html. Пока не тестировали, но, глядя на примеры кода, выглядят как nunjucks, swig, и, возможно, ejs или handlebars могут выполнить мое требование. – Dondey

+0

Я не понимаю, почему мой вопрос был приостановлен. Я не прошу мнения о том, какой модуль больше и лучше. Я действительно спрашиваю, в каком модуле есть средства, подходящие для выполнения моих требований, в первую очередь, потому что это похоже на то, что большинство нет. – Dondey

ответ

0

Я не уверен, что вы можете сделать то же самое в NodeJS (я думаю, нет).

Вы можете работать с сервером и клиентом: вы можете вернуть статический шаблон клиенту и данные отдельно и присоединиться к нему в клиенте. Затем, когда вам нужно что-то изменить в представлении (любые данные), вы можете снова создать его с помощью динамических данных и статического шаблона (или просто использовать любую библиотеку, например, jQuery для редактирования DOM).

Вы можете сделать это с помощью клиентских шаблонов, таких как Moustache.js.

Надеюсь, мой ответ вам будет полезен!

+0

Я думаю, что мое описание не было достаточно явным. Мой динамический js-вывод является сторонним компонентом, который не связан с какой-либо разметкой. Он обслуживается и кэшируется на серверах CDN, сваривается и запечатывается. Клиент получает конечный продукт, поэтому нет места для мустахоидов. – Dondey

+0

Итак, вам нужно написать автономную программу, которая принимает некоторый ввод и создает файл Javascript? Язык шаблонов, такой как mustache.js, по-прежнему является правильным решением.Вы будете использовать его исключительно для удобного отображения строк в вашей программе; тот факт, что вы создаете файл Javascript, не имеет значения. – ArthurDenture

1

Большинство шаблонов для моделирования могут создавать Javascript так же легко, как и HTML. В большинстве случаев, однако, лучше не динамически создавать Javascript. Вместо этого используйте статический Javascript, управляемый динамически генерируемыми данными, такими как объект JSON, встроенный в ваш обработанный html.

Это имеет несколько преимуществ:

  • безопасности. Вероятнее всего, вы случайно создадите недопустимый javascript или, что еще хуже, неправильно встраиваете созданный пользователем контент в ваш скрипт таким образом, который откроет вам атаки XSS.
  • скорость. Вы хотите сохранить свой статический и динамический контент отдельно. Статический контент может быть единственным скомпилированным пакетом Javascript, размещенным в отдельном домене, оптимизированном для обслуживания статического содержимого, а динамический контент может быть относительно небольшим файлом, созданным вашим сервером node.js.
+0

См. Мой комментарий к ответу iblancasa. У меня нет обработанного HTML, и у меня нет контроля или знаний о том, что происходит на клиенте, поскольку я предоставляю сторонний компонент. – Dondey

 Смежные вопросы

  • Нет связанных вопросов^_^