Choo's modular core was engineered from the ground up to be smaller and more efficient than every other alternative out there. This was made possible by building out the core components over the span of 3 years and combining them under a tiny API.
We think learning frameworks is boring. So instead of inventing a new language, Choo relies on vanilla JS and HTML. Combined with its small API and clean architecture this means Choo is easy to get started with, and stays that way as projects grow in scope and humans.
var html = require('choo/html')
var choo = require('choo')
var app = choo()
app.use(titleStore)
app.route('/', mainView)
app.mount('body')
function mainView (state, emit) {
return html`
<body>
<h1>Title: ${state.title}</h1>
<input type="text" value="${state.title}" oninput=${update} />
</body>
`
function update (e) {
emit('update', e.target.value)
}
}
function titleStore (state, emitter) {
state.title = 'Not quite set yet'
emitter.on('DOMContentLoaded', function () {
emitter.on('update', function (newTitle) {
state.title = newTitle
emitter.emit('render')
})
})
}
Supported by Dat Project, nearForm, X-Team, code and conspire, Andrew Joslin, Remi Nyborg, Jacob Burden, Pavel, and Terkel Gjervig