Declarative DOM

Declarative DOM Composition

The .dom library comes with a built-in accelerators that makes it possible to rapidly design human-readable DOM layouts without the need of JSX, or any other Javascript preprocessor.


This is achieved through Proxy methods built on top of the .H (create element) function, creating a native Javascript syntactic sugar:

ZGl2KAogIGRpdi51bmRlcmxpbmUoCiAgICAmIzM0O1dlbGNvbWUhJiMzNDsKICApLAogIHAoCiAgICAmIzM0O0luIHRoaXMgZXhhbXBsZSB3ZSBkZW1vbnN0cmF0ZSAmIzM0OywKICAgICYjMzQ7dGhlICYjMzQ7LCBiKCYjMzQ7LmRvbSYjMzQ7KSwgJiMzNDsgYWNjZWxlcmF0b3JzLiYjMzQ7CiAgKSwKICBwKAogICAgJiMzNDtDcmVhdGUgJiMzNDssIHNwYW4ucmVkKCYjMzQ7cG93ZXJmdWwmIzM0OyksCiAgICAmIzM0OyBsYXlvdXRzIHdpdGggJiMzNDssIGIoJiMzNDtuYXRpdmUgSlMhJiMzNDspCiAgKQop
Loading interactive example...

.tag Accelerators

When accessing a property out of the H function, a new function is composed, with the tag argument, bound to a tag named as the property.

Typically you should use the ES6 destructuring operator in the beginning of your script to create helpers for the HTML entities you are using later. For example:

const { div, b, i } = H;

This allows us to compose an HTML document in a natural manner like so:

ZGl2KAogIGRpdigmIzM0O05hbWU6ICYjMzQ7LCBiKCYjMzQ7Sm9obiYjMzQ7KSksCiAgZGl2KCYjMzQ7U3VybmFtZTogJiMzNDssIGkoJiMzNDtEb2UmIzM0OykpCik=
Loading interactive example...

.class Accelerators

When further accessing properties in the tag accelerator, a new function is composed that appends the property name in the list of the element’s CSS class names.

There is no limit on how many classes you can append, you can keep accessing deeper properties, and each time you will be appending a class name:

ZGl2KAogIHAucmVkLnVuZGVybGluZSgmIzM0O0hlbGxvIHdvcmxkISYjMzQ7KSwKICAvLyBZb3UgY2FuIGFsc28gY3JlYXRlIGNsYXNzZXMgYnkgc3RyaW5nCiAgLy8gYXMgeW91IHdvdWxkIG5vcm1hbGx5IGRvIHdpdGggYW55CiAgLy8gamF2YXNjcmlwdCBvYmplY3QgCiAgcFsmIzM5O2dyZWVuJiMzOTtdKCYjMzQ7V2VsY29tZSB0byB0aGUgd29ybGQgJiMzNDssCiAgICBzcGFuWyYjMzk7Ymx1ZSYjMzk7XS51bmRlcmxpbmUoJiMzNDtvZiAuZG9tISYjMzQ7KQogICkKKQ==
Loading interactive example...

Previous Topic
Next Topic