2.6 KiB
2.6 KiB
choo 
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,choois a tiny little framework - single state: immutable single state helps reason about changes
- minimal tooling: built for the cutting edge
browserifycompiler - 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
Packages used
- views:
yo-yo - models:
send-action,xtend - routes:
sheet-router
Installation
$ npm install choo