Socket
Book a DemoInstallSign in
Socket

data-components

Package Overview
Dependencies
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

data-components

Tiny component structure for web applications

latest
Source
npmnpm
Version
0.3.2
Version published
Maintainers
1
Created
Source

data-components Experimental

Tiny component structure for web applications

Install

$ npm install data-components --save

Or you can simply copy and paste the minified standalone version that lives under dist/

Features

  • No need for a module bundler, it works in all browsers
  • Zero dependencies
  • No magic under the hood, see it for yourself
  • Small (1.2 KB minified)

Motivation

There are plenty of options to architect a web application out there but most of them often assume that you're working on a SPA. That alone will add a lot of stuff that you might not want at all. Data binding, custom messaging system and virtual DOM to name a few.

Sometimes you just need something simple to kick things off without having to worry about naming conventions and programming paradigms. That's how this library was born.

Usage

Let's implement the simplest todo list app.

<!-- Create our todo list element passing some initial values -->
<ul data-component="todo" data-values="foo,bar"></ul>

<!-- Let's use a input field to read the user input -->
<input data-component="input" placeholder="What to do?">

Ok, now that we have our markup in place, let's implement the application.

// Todo component
class Todo {
  constructor(el, options) {
    this.el = el;
    // Read from initial values
    this.todos = options.values.split(',');
    this.render();
  }

  // Add items to the list
  add(todo) {
    this.todos.push(todo);
    this.render();
  }

  // Render the list to the DOM
  render() {
    this.el.innerHTML = this.todos.map(todo => `<li>${todo}</li>`).join('');
  }
}

// User input component
class Input {
  constructor(el, options, sandbox) {
    const todo = sandbox.get('todo');

    // Submit value to "todo" component when hitting the enter key
    el.addEventListener('keydown', e => {
      if (e.keyCode === 13) {
        todo.add(el.value);
        el.value = '';
        el.focus();
      }
    });
  }
}

// Bootstrap components (UMD build exposes `components()`)
components({
  todo: Todo,
  input: Input
});

demo

It works with just a few lines of code :tada:

Check out the demo page for a slightly more complex example.

More

For more detailed instructions on how the project works and how to use it, please check the user guide.

License

MIT © Rafael Rinaldi

Keywords

architecture

FAQs

Package last updated on 14 Apr 2016

Did you know?

Socket

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