@OKNOZA

Можно не использовать шаблонизатор для NodeJS?

Начал потихоньку изучать NodeJS, встал вопрос, а как внедрить NodeJS код в HTML ?
Сразу скажу что JS без проблем будет работать, почему такой вопрос, я на PHP не использую шаблонизатор, так как не вижу смысла он и сам по себе уже шаблон.
index.php
/...бал html бла./
<?=внедрил код;?>
/...бал html footer бла./

Получается юзер не видит PHP код, там может быть и цик и что хочешь.
А как происходит дело в NodeJS ?
  • Вопрос задан
  • 2249 просмотров
Пригласить эксперта
Ответы на вопрос 6
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
так как не вижу смысла он и сам по себе уже шаблон.

Пока у людей пишущих на php появляются такие мысли, над php будут продолжать смеяться. Единственная причина по которой вы можете использовать php как шаблонизатор - возможность открывать и закрывать теги, отмечая зону действия скрипта. Причем уже довольно давно (лет так 8 точно) в цивилизованном мире принято использовать один открывающий тег на файл и даже не закрывать его. В целом PHP плохой шаблонизатор. Более того, недалек тот день, когда можно будет отключить вообще эти открывающие/закрывающие теги.

А как происходит дело в NodeJS ?

А никак, js это js, html это html. Хочется извращений - можно хранить все в js в виде строк и работать с ними. Но лучше всегда использовать шаблонизаторы. Это как минимум будет вас ограничивать в том, что можно пихать в шаблоны а что нет. В идеале запрос данных не должен происходить из шаблона выше по слоям, только вниз. Скажем концепции типа HMVC родились именно из этого ограничения, при этом мы не нарушаем правило, о том что поток данных идет сверху вниз вместо прямого обращения из view к логике.
Ответ написан
index0h
@index0h
PHP, Golang. https://github.com/index0h
> А как происходит дело в NodeJS ?
Прими за исходную: работаешь со строкой, которую записываешь в body ответа. Не больше и не меньше. Да, можно сделать эту строку в виде "< html >< body >" + myContentVarHere + "< /body >< /html >", но зачем? Есть популярные шаблонизаторы: Jade, EJS, JQtemplates используй их.

@Fesor
> В целом PHP плохой шаблонизатор.
Не согласен. PHP - stateless язык, который вполне себе ок шаблонизатор. Если верить википедии: PHP: Hypertext Preprocessor. Да, есть twig, да есть smarty, но эти шаблонизаторы только пародируют PHP. Результат их работы - это тот же PHP код, только кэшированный.

> Пока у людей пишущих на php появляются такие мысли, над php будут продолжать смеяться.
Над нами php-dev смеются потому что:
1. Динамическая типизация. 5 + "5abc" + "abc5" по хорошему должно давать исключение в стиле "парень меняй драг диллера, это какое-то УГ!".
2. Не консистентное API. С тем же if (!strpos(...)) наверняка хлебнули горя.
3. Наличие миллиона стандартов. Да, есть PSR, расскажите о нем автору, знающему кохану.
4. Что на счет scalar type hinting? Всего 20 лет прошло как в 7-ке это таки решили внедрить, и то с ограничениями на вывод.
5. Что на счет демонов? Да, я знаю, можно, да я знаю как, но №;%: есть языки для этого приспособленные и php в их число не входит, это stateless язык!

Я отошел от темы шаблонизаторов.
Чем принципиально {{someVar}} лучше <?= $someVar; ?>, учитывая, что шаблон в любом случае приведется к нейтивному коду + за кэшируется?
Ответ написан
mr_T
@mr_T
Web-разработчик
Буду оригинален и просто отвечу на вопрос.
Сам по себе JS не мешается с HTML-кодом в принципе (кроме PHP такого нигде, собственно, и не бывает), то есть в HTML напрямую никак не внедрить JS код. Поэтому (да и не только поэтому, но другие причины красочно описаны в других ответах) для генерации HTML в NodeJS используют шаблонизаторы. А если нужно что-то, что будет максимально похоже на PHP, то можно взять EJS. Но раз уж ты взялся за ноду, то на мой взгляд нужно без рассуждений брать Jade, лучше которого нет нигде, в частности и в других языках/средах.
Ответ написан
Комментировать
MarcusAurelius
@MarcusAurelius Куратор тега Node.js
автор Impress Application Server для Node.js
Шаблонизаторы нужны только если Вы делаете индексируемые страницы типа информационного сайта или блога, нода это делать может, но это не ее профиль, для веб-приложений это плохая привычка. Если у Вас приложение, то сделайте его одностраничным SPA, на сервере отдавайте корневую страницу и AJAX API, а на клиенте - забирайте JSON и в соответствии с данными модифицируйте DOM страницы. Для браузерной стороны посмотрите React и WebComponents.
Ответ написан
Комментировать
@LiguidCool
Не обязательно, так-же как не обязательно использовать какой-либо Framework типа Express. Можно писать на чистом JS, но зачем?
А вообще зависит от ситуации. Я на PHP часто не использую шаблонизатора, но это удобно лишь в случае, когда на страницу выводится не много данных. Если же их много, все становится кашей ...
Ответ написан
@Elizavetta
Matroid: gamedev/js-разработка
Пока у людей пишущих на php появляются такие мысли, над php будут продолжать смеяться.
Точно!

Как вариант, можно перейти на клиентскую шаблонизацию.
Если же нужно генерировать много страниц, шаблонизаторы проще всего.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы