Giter Club home page Giter Club logo

tmpl-htm's Introduction

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

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 = (props) => {
  return tmplTag`
    <${Fragment}>
      <li>count: ${props.count}</li>
      <button>increase</button>
    <//>
  `;
});

document.body.appendChild(tmplTag`<${Component} a=${7} />`);
appendAll(tmplTag`<${Component} a=${7} />`, 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 = (props) => {
  return tmplTag`
    <${Fragment}>
      <li>count: ${props.count}</li>
      <button>increase</button>
    <//>
  `;
});

document.body.appendChild(tmplTag`<${Component} a=${7} />`);
appendAll(tmplTag`<${Component} a=${7} />`, 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

tmpl-htm's People

Contributors

superlucky84 avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.