JSPM

simple-dom-make

1.0.0
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 15
  • Score
    100M100P100Q63560F
  • License ISC

A lightweight helper to build DOM trees dynamically.

Package Exports

    This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (simple-dom-make) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

    Readme

    Simple DOM builder

    Lightweight, no headache JSON to DOM utility.

    What is does

    Feed it a JS object, get a DOM element back.

    What is doesn't

    Replace a templating engine, or any kind of state management. This was never meant to replace React or anything.

    Why use it ?

    No config, lightweight, and does the heavy lifting for building a DOM from JS.

    Nice to use for vanilla JS websites that need to remain nice and simple.

    Usage

    Most basic

    import DomTreeBuilder from 'simple-dom-make';
    
    // Get your root element
    const rootElement = document.querySelector("#root");
    
    // Build the inside as an object literal
    const tree = {
        tag: "div",
        attributes: {
            "class": "container"
        },
        children: [
            {
                tag:"p",
                content: "A text paragraph"
            },
            {
                tag: "p",
                children: [
                    {
                        tag: "TEXTNODE",
                        content: "The start of this phrase, "
                    },
                    {
                        tag: "b",
                        content: "followed by bold words"
                    },
                    {
                        tag: "TEXTNODE",
                        content: " to make a statement."
                    }
                ]
            }
        ]
    }
    // Tada.
    rootElement.append(DomTreeBuilder.make(tree));

    This would output the following HTML in your browser :

    <div class="container">
        <p>A text paragraph</p>
        <p>The start of this phrase, <b>followed by bold words</b> to make a statement."</p>
    </div>

    Dynamic

    Use any kind of logic to build your tree.

    const users = [
        {
            id: 35,
            name: "John Doe"
        },
        
        {
            id: 53,
            name: "Jane Don't"
        }
    ]
    
    const usersTree = {
        tag: "div",
        attributes: {
            "class": "container"
        },
        children: users.map(user => ({
            tag: "div",
            attributes: {
                "class": "card",
                "data-user-id": user.id
            },
            children: [
                {
                    tag: "h4",
                    content: user.name
                }
            ]
        }))
    }
    rootElement.append(DomTreeBuilder.make(usersTree));

    This would output the following HTML in your browser :

    <div class="container">
        <div class="card" data-user-id="35">
            <h4>John Doe</h4>
        </div>
        <div class="card" data-user-id="53">
            <h4>Jane Don't</h4>
        </div>
    </div>

    The JS object in details

    What you can feed the make method with.

    Property Type Note
    tag string Should be an HTML tag (a, abbr, div...) or "TEXTNODE" if you only want to give it plain text.
    attributes (optional) object Key value pairs, where the key is the attribute name, and the value its value.
    content (optional) string Text content of the element - shortcut for putting a TEXTNODE as a child element
    children (optional) array An array of that same structure