1.0.1 • Published 2 years ago
tmpl-htm v1.0.1
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-htmOr Use CDN
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/tmpl-htm@1.0.0/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 pnpmproject install
git clone https://github.com/superlucky84/tmpl-htm.git
cd tmpl-htm
pnpm installproject build
pnpm buildRunning the development environment
pnpm devTest
// pnpm install
pnpm test