
1kb functional JavaScript library for building UI applications - jbucaran
https://github.com/hyperapp/hyperapp
======
shotgungg
This is pretty interesting. What was the motivation behind this?

~~~
jbucaran
Thanks. I'm glad you ask. The motivation was a web client for a research
project at work. My first choice was React+Redux, since that's what we already
use for our service Qiita, but I wanted something more lightweight.

I made the first prototype using Elm, but it was too painful to integrate with
third party components, like CodeMirror[1].

I made the next prototype using yo-yo, but yo-yo is agnostic about state
management, lacks inline CSS styles (by choice) and it's based in morphodom
(which updates DOM nodes directly) whereas I preferred a virtual DOM approach
like Snabbdom or Vidom.

I also considered choo.js, a framework based on yo-yo, but it has the same
limitations as yo-yo. It was also very difficult to integrate third party
components with it, e.g, CodeMirror, involving the creation of a portal[2],
reminiscent of Elm ports.

I also couldn't agree with some of its API choices like namespaces, router
design and models as containers for state objects.

HyperApp is ~1kb, and takes inspiration from several sources: the Elm
architecture[3], yo-yo/choo's API, the SAM pattern[4], Snabbdom and Vidom.

[1]: [https://codemirror.net](https://codemirror.net)

[2]: [https://github.com/trainyard/choo-codemirror#choo-
codemirror](https://github.com/trainyard/choo-codemirror#choo-codemirror))

[3]: [https://github.com/evancz/elm-architecture-tutorial/#the-
elm...](https://github.com/evancz/elm-architecture-tutorial/#the-elm-
architecture)

[4]: [http://sam.js.org](http://sam.js.org)

