2011-12-16 5 views
6

Я узнал о шаблоне Jade в комплекте с Express. Насколько я понимаю, Джейд позволяет серверной стороне рендеринга. Разве это не является субоптимальным по двум причинам:Имеет ли смысл отображать шаблоны на стороне сервера?

1) Сервер должен вычислить больше, чтобы отобразить шаблоны. Работа может быть нажата на стороне клиента.

2) После того, как шаблон или частичная часть были визуализированы, и данные нуждаются в обновлении, он просто отправляет JSON клиенту, а не пересылает полностью полноценный HTML, что является утечкой пропускной способности.

Это настоящие проблемы с визуализацией шаблонов на стороне сервера?

ответ

7

Я думаю, что это действительно зависит от типа приложения, которое вы пишете. Если у вас есть страница, которая в основном обслуживает отдельные страницы, и вписывается в типичную форму CRUD/MVC, это может не быть проблемой. Однако, если вы пишете что-то динамическое с тонны ajax, это проблема :-)

Я чувствую вашу боль - меня это несколько укусило в разных стопках. В итоге я просто выполнил все привязки списков с асинхронными вызовами в браузере, которые выполняются после загрузки основной страницы. Это воняет, потому что вам нравится этот первый запрос, который поставляется со страницей данных предварительно привязанного списка, но последующая страница должна управляться вызовами ajax. Я просто не хочу писать материал шаблона один раз для сервера и один раз для клиента.

Я не думаю/думаю/Jade поддерживает такую ​​привязку на стороне клиента. Хорошей новостью является то, что есть несколько популярных языков шаблонов, которые работают как на сервере, так и в браузере. Два я знаю, являются:

Я не видел никого, используя пластины с курьерским, как он относится к проекту flatironjs, какой вид имеет это собственная растущая структура. Есть тонны примеров там использования усов и EJS с курьерским:

На стороне записки, вот список шаблонных пакетов для узла на сайте Joyent в:

https://github.com/joyent/node/wiki/modules#wiki-templating

Мое предложение начать с EJS - это немного больше вниз к земле с синтаксисом не-HAML-esque, поддерживает привязку к клиенту и серверу и, кажется, хорошо принят в экспресс-стеке.

Счастливое кодирование!

+0

Спасибо, это было полезно. Под «переплетными списками» вы имеете в виду «заполнение данными»? Кроме того, вы, похоже, предлагаете работать только с клиентскими шаблонами, чтобы не требовалось переписывать их для сервера. Итак, почему вы выделили шаблонные языки, которые работают как на клиенте, так и на сервере? – Randomblue

+0

Когда я говорю привязки списков, я имею в виду запрос на список данных (обычно json/xml, paged), применение этой структуры данных к шаблону и предоставление html клиенту. Я не предполагаю, что вы используете только шаблоны на стороне клиента - причина, по которой я указывал те, которые работают на обоих, заключается в том, что мне нравится иметь их в обоих случаях. –

+0

Например, мне нравится иметь шаблон для элемента списка в ретрансляторе. Использование этого на клиенте отлично работает - вы запрашиваете страницу данных и связываете их все в клиенте. Что происходит, когда я хочу использовать один и тот же шаблон в заголовке страницы? Я не собираюсь делать HTTP-запрос только для этой информации заголовка, но я не хочу писать тот же шаблон снова только для этого использования. Вот где двойное назначение шаблонов становится удивительным. (извините за супер длинный пост) –

1

Есть и другой важный момент. В зависимости от цели вашего сайта. Возможно, вам придется обратить внимание на SEO или нет.

Проще говоря, контент, создаваемый с сервера, индексируется поисковой системой. Другие нет. Поскольку поисковые роботы не заботятся о клиентском содержимом.

+1

Google bot теперь запускает JavaScript, поэтому контент-клиент с клиентом может быть проиндексирован Google. – Matt

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

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