jbucaran | 7 years ago | on: Show HN: Tech Education. Done Right. For Free
jbucaran's comments
jbucaran | 8 years ago | on: Perl 6 Optimism
jbucaran | 8 years ago | on: Show HN: Hyperapp 1.0 – 1KB JavaScript library for building front end apps
jbucaran | 8 years ago | on: Show HN: Hyperapp 1.0 – 1KB JavaScript library for building front end apps
jbucaran | 8 years ago | on: Show HN: 1 KB JavaScript library for building applications
jbucaran | 8 years ago | on: Show HN: 1 KB JavaScript framework for building front-end applications
If you are interested have a look here:
https://gist.github.com/jbucaran/8dc33b7947f3193eb2ea3d5700e...
jbucaran | 8 years ago | on: Show HN: 1 KB JavaScript framework for building front-end applications
jbucaran | 8 years ago | on: Show HN: 1 KB JavaScript framework for building front-end applications
jbucaran | 8 years ago | on: Show HN: 1 KB JavaScript framework for building front-end applications
jbucaran | 8 years ago | on: Show HN: 1 KB JavaScript framework for building front-end applications
Personally, if I was going to go with this kind of architecture, I'd choose Preact (or React if I can't help it) to tap into the massive React ecosystem.
jbucaran | 8 years ago | on: Show HN: 1 KB JavaScript framework for building front-end applications
Hyperapp doesn't outperform DIO.js, but that was never the mission I embarked on with this project. You can see it benchmarked <https://rawgit.com/krausest/js-framework-benchmark/master/> among many other frameworks and you can see it's on the same ballpark as React.
The goal of this project is to minimize the concepts you need to learn to write a modern frontend app while staying on par with what other libraries can do; deliver good performance, but not at the sake of a clumsy or awkward API; reduce the boilerplate and still follow our "simplified" take on Flux or the Elm architecture if you prefer.
Hyperapp is unreservedly functional, we don't have stateful components, use `this`, classes or have more than one way to do the same thing.
We are not just about saving bytes either, but size and our brutally small code base is important for a few reasons. The idea behind the entire thing being 300 LOC is that _anyone_ can understand how everything works within a few hours. It's genuinely possible to understand not just what it does, but how it does it.
IMHO a normal person can't do that with React, or DIO, or most of the other large-ish frameworks out there. Even Preact, I found it too large for my taste. Yes, minified and gzipped is like 3.4 KB, but that translates to almost 800 LOC. It's an outstanding achievement considering it's just a fraction of React, but you are only getting React+ReactDOM.
Hyperapp is not perfect, but you are getting React+ReactDOM+Redux+ReduxThunk out of the box.
Just for a light (and harmless) comparison, this is a +/- counter in DIO.js:
class Counter {
getInitialState () {
return {
count: 0
}
}
increment () {
return {
count: this.state.count + 1
}
}
decrement () {
return {
count: this.state.count - 1
}
}
render () {
return [
this.state.count,
h('button', {onClick: this.increment}, '+'),
h('button', {onClick: this.decrement}, '-')
]
}
}
dio.render(Counter);
And here is the same in Hyperapp: app({
state: 0,
actions: {
add: state => state + 1,
sub: state => state - 1
},
view: (state, actions) =>
<div>
<button onclick={actions.add}>+</button>
<h1>{state}</h1>
<button onclick={actions.sub}>-</button>
</div>
})jbucaran | 8 years ago | on: Show HN: 1 KB JavaScript framework for building front-end applications
jbucaran | 8 years ago | on: Show HN: 1 KB JavaScript framework for building front-end applications
jbucaran | 8 years ago | on: Show HN: 1 KB JavaScript framework for building front-end applications
That code is not directly consumed by the browser, instead, it's compiled into the code below by a compiler like Babel, minified and bundled into a tiny blob of code we ship to the browser.
app({
state: {
count: 0
},
view: (state, actions) =>
h("main", {}, [
h("h1", {}, [state.count]),
h("button", { onclick: actions.down }, "-"),
h("button", { onclick: actions.up }, "+"),
]),
actions: {
down: state => ({ count: state.count - 1 }),
up: state => ({ count: state.count + 1 })
}
})
So, I used JSX for "familiarity", but you don't need to use it to build your own apps. You can just write the code shown in the snippet above and you'd do just as well. You can also minimize and bundle your code to tap into the JavaScript ecosystem, code using a modular style and still not have to use JSX at all.Hope that helps :)
jbucaran | 8 years ago | on: Show HN: Hyperapp – 1 KB JavaScript library for building front end apps
jbucaran | 8 years ago | on: Show HN: Hyperapp – 1 KB JavaScript library for building front end apps
jbucaran | 8 years ago | on: Show HN: Try Google fonts in Style
My feedback would be to make it easier to discover fonts. Right now I only have a few fonts to choose from the select box.
Another issue is that once a font is selected, I must erase the text in the select to get the select items drop down again.
jbucaran | 8 years ago | on: Show HN: Under the hood ReactJS
Incidentally, this complexity is what led me to build my own little vdom utility <https://github.com/hyperapp/hyperapp>.
I'll be drawing inspiration from this chart to explain it.
jbucaran | 8 years ago | on: Show HN: 1kb JavaScript library for building front end applications
See: http://thejameskyle.com/adopting-flow-and-typescript.html
jbucaran | 8 years ago | on: Show HN: 1kb JavaScript library for building front end applications
That said, you can totally use Flow or TypeScript with hyperapp.