Template to JSX
Build a VDOM using native ES6 templates. No transpiling required for Node.js or modern browsers.
This library is based on Vance Luca's jsx-tmpl. All credit for creating this library goes to him.
Features
- Valid ES6 syntax (no transpiling required for Node and modern browsers)
- Caches JSX compilation for consecutive render() calls (so the HTML string is not converted to JSX on each render)
- Converts HTML properties like "class" and "for" to required "className" and "htmlFor" for React
- Use with any React-compatible framework (React, Preact, Inferno, etc.) or virtual DOM library
Installation
npm i template2jsx --save
Usage
Just use the getJSXTag
function to generate a tagged template literal and write normal HTML markup inside native ES6 templates.
const getJSXTag = ;const Greeting = ;const React = ; // Pass in React, and a hash of components usedconst html = ; PureComponent { return html` `; }
Passing Variables / Props
For dynamic props or rendering variables, use standard ES6 template interpolation:
const getJSXTag = ;const Greeting = ;const React = ; const html = ; PureComponent { let name = "John Doe"; return html` `; // Pass in React, and a hash of components used }
Usage with Preact
Since React is passed in as a parameter to the resulting render function, you can substitute it for Preact, or any other virtual DOM library or React-compatible framework.
const getJSXTag = ;const Preact = ; // Pass in Preact instead of React!const html = ; Component { let name = "John Doe"; return html` Hell World! `; }