Socket
Socket
Sign inDemoInstall

handlebars-inc

Package Overview
Dependencies
605
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

handlebars-inc

Render isomorphic Handlebars templates using incremental-dom on the client


Version published
Maintainers
1
0

Weekly downloads

Readme

Source

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

Keywords

FAQs

Last updated on 20 Apr 2019

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc