Files
buuh/README.md
T
2016-05-11 01:09:53 +07:00

2.4 KiB

choo stability

npm version build status test coverage downloads js-standard-style

A framework for creating sturdy web applications. Built on years of industry experience and distills the essence of functional architectures into a productive package.

Features

  • minimal size: weighing under 15kb, choo is a tiny little framework
  • single state: immutable single state helps reason about changes
  • minimal tooling: built for the cutting edge browserify compiler
  • transparent side effects: using "effects" and "subscriptions" brings clarity to IO
  • omakase: composed out of a balanced selection of open source packages
  • idempotent: renders seemlessly in both Node and browsers
  • very cute: choo choo!

Usage

const choo = require('choo')

const app = choo()
app.model('title', {
  state: { title: 'my-demo-app' },
  reducers: {
    'update': (action, state) => ({ title: action.payload })
  },
  effects: {
    'update': (action, state) => document.title = action.title
  }
})

const mainView = choo.view((state, send) => `
  <main class="app">
    <h1>${state.title}</h1>
    <label>Set the title</label>
    <input
      type="text"
      placeholder=${state.title}
      oninput=${(e) => send('title:update', { payload: e.target.value })}>
  </main>
`)

app.router((route) => [
  route('/', mainView)
])

const node = app.start()
document.appendChild(node)

Concepts

  • state:
  • reducers:
  • effects:
  • subscriptions:

API

choo

Installation

$ npm install choo

License

MIT