tmpl-htm
v1.0.1
Published
An extensible virtual DOM library for lightweight use in a variety of environments.
Downloads
3
Readme
tmpl-htm
Generate HTML elements using HTM ("Hyperscript Tagged Markup") or JSX.
(4.20 KiB / gzip: 1.90 KiB)
🚩 Table of Contents
How To Install
Use NPM
pnpm add tmpl-htm
Or Use CDN
- UMD : https://cdn.jsdelivr.net/npm/[email protected]/dist/tmplHtm.umd.js
With HTM
import { tmplTag } from 'tmpl-htm';
const element = tmplTag`<${Component} />`;
With JSX
- If you don't want to use 'tmplTag', you can use 'JSX' as an alternative.
import { h } from 'tmpl-htm';
// Setting JSX - Babel
...
{
"plugins": [
["@babel/plugin-transform-react-jsx", {
"pragma": "h",
"pragmaFrag": "Fragment",
}]
]
}
...
// Setting JSX - Typescript < 4.1.1
...
{
"compilerOptions": {
"jsx": "react",
"jsxFactory": "h",
"jsxFragmentFactory": "Fragment",
//...
}
}
...
// Setting JSX - Typescript >= 4.1.1
...
{
"compilerOptions": {
"jsx": "react-jsx",
"jsxImportSource": "tmpl-htm",
//...
}
}
...
// Setting JSX - If you use TypeScript within a Babel toolchain
...
// typescript config
{
"compilerOptions": {
"jsx": "preserve",
"jsxFactory": "h",
"jsxFragmentFactory": "Fragment",
//...
}
}
// babel config
{
presets: [
"@babel/env",
["@babel/typescript", { jsxPragma: "h" }],
],
plugins: [
["@babel/transform-react-jsx", { pragma: "h" }]
],
}
...
Examples
With ESM
import { Fragment, tmplTag, appendAll } from 'tmpl-htm';
const Component = (renew, props) => {
return () => tmplTag`
<${Fragment}>
<li>count: ${props.count}</li>
<button onClick=${change}>increase</button>
<//>
`;
});
document.body.appendChild(tmplTag`<${Component}>`);
appendAll(tmplTag`<${Component}>`, document.querySelectorAll('.target'));
// append, appendAll, prepend, prependAll, replace, replaceAll, insertBefore, insertBeforeAll,
With UMD
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/tmplHtm.umd.js"></script>
<div class="target"></div>
<script>
const { Fragment, tmplTag, appendAll } = 'tmplHtm';
const Component = (renew, props) => {
return () => tmplTag`
<${Fragment}>
<li>count: ${props.count}</li>
<button onClick=${change}>increase</button>
<//>
`;
});
document.body.appendChild(tmplTag`<${Component}>`);
appendAll(tmplTag`<${Component}>`, document.querySelectorAll('.target'));
// append, appendAll, prepend, prependAll, replace, replaceAll, insertBefore, insertBeforeAll,
</script>
Related Projects
- htm - making Hyperscript Tagged Markup possible
Develop Guide
It's open source, so you can develop and contribute together.
pnpm install (this project was created using pnpm.)
npm install -g pnpm
project install
git clone https://github.com/superlucky84/tmpl-htm.git
cd tmpl-htm
pnpm install
project build
pnpm build
Running the development environment
pnpm dev
Test
// pnpm install
pnpm test