Skip to content

A light-weight DOM Renderer supports Web components standard & TypeScript language.

Notifications You must be signed in to change notification settings

EasyWebApp/DOM-Renderer

Repository files navigation

DOM Renderer

A light-weight DOM Renderer supports Web components standard & TypeScript language.

NPM Dependency CI & CD

NPM

Open in GitPod

Usage

JavaScript

import { DOMRenderer } from 'dom-renderer';

const newVNode = new DOMRenderer().patch(
    {
        tagName: 'body',
        node: document.body
    },
    {
        tagName: 'body',
        children: [
            {
                tagName: 'a',
                props: { href: 'https://idea2.app/' },
                style: { color: 'red' },
                children: [{ text: 'idea2app' }]
            }
        ]
    }
);

console.log(newVNode);

TypeScript

Edit DOM Renderer example

tsconfig.json

{
    "compilerOptions": {
        "jsx": "react-jsx",
        "jsxImportSource": "dom-renderer"
    }
}

index.tsx

import { DOMRenderer } from 'dom-renderer';

const newVNode = new DOMRenderer().render(
    <a href="https://idea2.app/" style={{ color: 'red' }}>
        idea2app
    </a>
);

console.log(newVNode);

Node.js & Bun

view.tsx

import { DOMRenderer } from 'dom-renderer';

const renderer = new DOMRenderer();

const Hello = () => <h1>Hello, JSX SSR!</h1>;

export const generateStream = () => renderer.renderToReadableStream(<Hello />);

index.ts

import { Readable } from 'stream';
import { createServer } from 'http';
import 'dom-renderer/polyfill';

import { generateStream } from './view';

createServer((request, response) => {
    const stream = generateStream();

    Readable.fromWeb(stream).pipe(response);
}).listen(8080);

Framework

Web components

Edit MobX Web components

Original

Inspiration

SnabbDOM

Prototype

Edit DOM Renderer