handlebars-inc

WebJar for handlebars-inc

Лицензия

Лицензия

MIT
Группа

Группа

org.webjars.npm
Идентификатор

Идентификатор

handlebars-inc
Последняя версия

Последняя версия

0.0.3
Дата

Дата

Тип

Тип

jar
Описание

Описание

handlebars-inc
WebJar for handlebars-inc
Ссылка на сайт

Ссылка на сайт

https://www.webjars.org
Система контроля версий

Система контроля версий

https://github.com/jacobstern/handlebars-inc

Скачать handlebars-inc

Как подключить последнюю версию

<!-- https://jarcasting.com/artifacts/org.webjars.npm/handlebars-inc/ -->
<dependency>
    <groupId>org.webjars.npm</groupId>
    <artifactId>handlebars-inc</artifactId>
    <version>0.0.3</version>
</dependency>
// https://jarcasting.com/artifacts/org.webjars.npm/handlebars-inc/
implementation 'org.webjars.npm:handlebars-inc:0.0.3'
// https://jarcasting.com/artifacts/org.webjars.npm/handlebars-inc/
implementation ("org.webjars.npm:handlebars-inc:0.0.3")
'org.webjars.npm:handlebars-inc:jar:0.0.3'
<dependency org="org.webjars.npm" name="handlebars-inc" rev="0.0.3">
  <artifact name="handlebars-inc" type="jar" />
</dependency>
@Grapes(
@Grab(group='org.webjars.npm', module='handlebars-inc', version='0.0.3')
)
libraryDependencies += "org.webjars.npm" % "handlebars-inc" % "0.0.3"
[org.webjars.npm/handlebars-inc "0.0.3"]

Зависимости

compile (7)

Идентификатор библиотеки Тип Версия
org.webjars.npm : types__node jar [11.13.4,12)
org.webjars.npm : shortid jar [2.2.14,3)
org.webjars.npm : types__incremental-dom jar [0.5.0]
org.webjars.npm : parse5 jar [5.1.0,6)
org.webjars.npm : types__parse5 jar [5.0.0]
org.webjars.npm : handlebars jar [4.1.2]
org.webjars.npm : incremental-dom jar [0.6.0,0.7)

Модули Проекта

Данный проект не имеет модулей.

handlebars-inc

Handlebars Inc is a library for rendering Handlebars templates using the incremental-dom library. This enables isomorphic templates that can be rendered with good performance on both a Node server and a browser client. Incremental DOM was authored specifically for use as a backend for templates, and offers an excellent API for in-place updates to a page UI.

Handlebars Inc exposes a compatible Handlebars API by default, and can therefore be used as a drop-in replacement for Handlebars on the server. On the client, Handlebars Inc loads an instance of the Incremental DOM API as HandlebarsInc.idom, and also exposes HandlebarsInc.idom.patch() as HandlebarsInc.patch() for convenience.

Finally, template functions are augmented to accept a backend property in the options object that can take the value 'idom' for Incremental DOM rendering. This enables usage on the client along the lines of:

var searchPartial = HandlebarsInc.partials['search-main'];
HandlebarsInc.patch(
  document.getElementById('main'),
  searchPartial({ query: 'Node.js', results: [] }, { backend: 'idom' })
);

See https://github.com/jacobstern/handlebars-inc-demo for a full example application.

Technical Details

Handlebars Inc differs from previous Incremental DOM backends for Handlebars in that it forks several components of the Handlebars library to parse and interpret HTML fragments during code generation. As a result, many features of Handlebars are available "for free" and the same compiled template may be used to generate either templated text or Incremental DOM calls.

When the default 'text' backend is invoked, Handlebars Inc builds up a text buffer using a custom implementation of the Incremental DOM API. This has more overhead than the native Handlebars implementation which will have fewer buffer appends and fewer function calls, but I don't expect a serious performance difference in a Node environment. (This hasn't been measured with actual profiling yet.) The advantage of this approach is that code generation and custom helpers only need to implement one code path that targets Incremental DOM rather than always supporting both text and Incremental DOM backends separately.

Status

The project is very new and untested, and not ready for production use. Basic Handlebars functionality is covered in the test suite.

Major Backlog Items

  • Needs proper documentation #7
  • Missing TypeScript type definitions #6
  • Custom helper API unexplored, underdeveloped #8

Версии библиотеки

Версия
0.0.3