Предварительно скомпилированный руль JS быстрее, чем просто рендеринг на сервере?

Я заранее прошу прощения за общий вопрос о руле. Я работаю в Rails, и хотя Handlebars выглядит круто, у меня возникают проблемы с тем, чтобы увидеть преимущество в компиляции представлений на сервере.

Итак, вот вопросы.

В настоящее время наши приложения компилируют шаблоны Handlebars JS на нашем сервере узлов и передают полностью обработанные страницы обратно клиенту. Меня попросили изучить предварительную компиляцию шаблонов для визуализации на клиенте.

Во-первых, я немного озадачен тем, как это сконструировать. Будет ли первоначальная загрузка на клиент похожа на шаблон макета (просто шаблон html, css и js), тогда клиент будет использовать любые передаваемые ему данные json вместе с предварительно скомпилированными шаблонами, расположенными в Handlebars.templates, для создания детали взглядов?

Если да, то действительно ли эффективнее загружать клиента всеми возможными шаблонами, которые ему могут понадобиться, а не просто обслуживать только то, что ему нужно, в то время, когда оно ему нужно?

3 ответа

Во-первых, я немного озадачен тем, как это сконструировать. Будет ли первоначальная загрузка на клиент похожа на шаблон макета (просто шаблон html, css и js), тогда клиент будет использовать любые передаваемые ему данные json вместе с предварительно скомпилированными шаблонами, расположенными в Handlebars.templates, для создания детали взглядов?

Если вы делаете что-то надежно, то вы бы обслуживали страницу сервера как обычно.

Это будет включать в себя <script> в котором были встроены шаблоны. Они начинают играть только в тот момент, когда вторая страница обычно загружается с сервера.

Если да, то действительно ли эффективнее загружать клиента всеми возможными шаблонами, которые ему могут понадобиться, а не просто обслуживать только то, что ему нужно, в то время, когда оно ему нужно?

У вас есть дополнительные расходы на первоначальную загрузку. Если ваши данные соответствуют требованиям, это окупается в долгосрочной перспективе, так как вам не нужно повторно извлекать все документы HTML каждый раз, когда посещается новая страница, основанная на том же шаблоне (и в некоторых случаях, когда все изменения могут быть рассчитаны клиентом сторона, вы можете полностью избежать некоторых HTTP-запросов).

Это не быстрее для начальной загрузки.

Но если вы создаете "одностраничное" приложение, то все изменения после начальной загрузки будут выполняться намного быстрее. Это даст более динамичное и быстрое чувство.

Но если вы делаете рельсы с формами, и если вы не делаете приложение, похожее на "одну страницу", то нет никакой причины для рендеринга на стороне клиента.

Это действительно зависит от конкретных потребностей и ограничений вашего приложения. Преимущество шаблонов на клиенте заключается в снижении http-запросов и более быстрой производительности. Недостатком является вздутие живота. Поэтому в зависимости от того, где находятся узкие места вашей производительности, может быть лучше или хуже увеличить число запросов HTTP по сравнению с добавлением раздувания к исходной полезной нагрузке. Конечно, вы можете лениво загрузить пакет шаблонов и т. Д. И т. Д. И т. Д.

Что касается его разработки, то да, ваши шаблоны ждут клиента. Когда вы запрашиваете JSON с сервера, вы вставляете данные в шаблоны и визуализируете на странице.

Другие вопросы по тегам