Socket
Socket
Sign inDemoInstall

@mercuryworkshop/dreamlandjs

Package Overview
Dependencies
0
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    @mercuryworkshop/dreamlandjs

A utilitarian HTML rendering library


Version published
Maintainers
1
Created

Readme

Source

What is Dreamland?

dreamland.js is a reactive JSX-based rendering library with no virtual dom

Why do we need another javascript framework????

React is great, but the API is unnecesarily complex and bloated. Dreamland lets you write code where what you see is what you get, no trickery.

What does it look like?

Here's a simple counter app

function App() {
  this.counter = 0;
  return (
    <div>
      <button on:click={() => this.counter++}>Click me!</button>
      <p>
       {use(this.counter)}
      </p>
    </div>
  );
}

window.addEventListener("load", () => {
  document.body.appendChild(<App/>);
});

Compare that to the equivalent code in react:

import { React, useState } from 'react'
 
function App() {
  const [counter, setCounter] = useState(0);
 
  const increase = () => {
    setCounter(count => count + 1);
  };
 
  return (
    <div>
      <button onClick={increase}>Click me!</button>
      <p>
        Value: {counter}
      </p>
    </div>
  );
}

ReactDOM.render(
  <React.StrictMode>
    <App />
  </React.StrictMode>,
  document.getElementById("root")
);

dreamland.js provides a simple and intuitive API at a low cost (~3kb, smaller than preact), while maintaining performance and ease of use

To get started with dreamland, add this to the compileroptions of your tsconfig.json

"jsx":"react",
"jsxFactory":"h",
"jsxFragmentFactory":"Fragment",
"types": ["@mercuryworkshop/dreamlandjs"],

and run npm install @mercuryworkshop/dreamlandjs

If you prefer using modules and are using a bundler, simply import "@mercuryworkshop/dreamlandjs"; into at least one file you're using.

If you don't like using modules, just add <script src="://unpkg.com/@mercuryworkshop/dreamlandjs"></script> to your html, and you can use dreamland as normal.

dreamland can even be used without a build step, here's the counter example in plain JS

function App() {
  this.counter = 0;
  return html`
    <div>
      <button on:click=${() => this.counter++}>Click me!</button>
      <p>
        ${use(this.counter)}
      </p>
    </div>
  `;
}

window.addEventListener("load", () => {
  document.body.appendChild(h(App));
});

See the examples/ directory for more.

Keywords

FAQs

Last updated on 24 Feb 2024

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc