Christian Sakai | Harris Robin Kalash
The Front End
React's rise in popularity is partly due to the fact that it breaks some of the most fundamental conventions we have on the front-end. By breaking those conventions, React unleashed a shock wave on the web development community. Re-opened basic questions that were closed forever. E.G: Who would have ever imagined that CSS-tricks would post an article debating the need of CSS on the web?
Where we come from.
JS Frameworks (Meteor, Angular, Ember, Backbone)
Pros
Easy to start
Faster development
Cons
JS world is constantly changing
The framework (author/s) decides the implementation
Does not compose well
Time investment in complex learning curve
Overkill features
Patterns (MVC, Flux, Redux) & Libraries (React, Express, Mongoose)
Pros
You decide the implementation
Easy to test, maintain, integrate & manage dependencies with other libraries
Small learning curve
Pick what features are needed
Cons
Require more setup to start
Pros
Easy to start
Cons
Steep learning curve due to big API (controllers, directives, services, factories)
Hard to test, maintain & integrate with other libraries
Overkill
About to be deprecated in favor of 2.0
Slow performance due to design choice
Debugging is hard
No server side rendering
Pros
Easy learning curve due to small API
Easy to test
Better performance than most client side frameworks out of the box
Even better performance with unidirectional data flow (Flux/Redux)
Support server side rendering + client side mounting
Cons
Can’t be used by itself
Pros
Lesser boilerplate code than Flux
Easier learning curve
Easy to test (just pure functions)
Easy to manage application state (one source of truth called “store”)
Possible to implement middleware
Time travel functionality
require('./styles.css');
require('./template.jade');
require('./image.png);:local(.foo) { … }
COMPILES TO
._1rJwx92-gmbvaLiDdzgXiJ { … }
RequireJS
Slow.
Yes.
No.
Browserify
Better.
No.
Webpack
Yes.
Very fast.
Yes, using a loader.
Source: http://delivery.acm.org/10.1145/2750000/2742814/supp/Static_Assets_Pipeline_With_Webpack.pdf?ip=71.183.68.229&id=2742814&acc=OPEN&key=4D4702B0C3E38B35%2E4D4702B0C3E38B35%2E4D4702B0C3E38B35%2E6D218144511F3437&CFID=556252793&CFTOKEN=22415494&__acm__=1446061364_7da43fab60a5919ff13275cbcdff4a73
postCSS is completely modular and doesn't do much. All functionality comes from plugins.
Examples of plugins.
cssnext
A bunch of postCSS plugins based on proposed CSS4 features. (The Babel of CSS).
JavaScript world is constantly changing (http://www.breck-mckye.com/blog/2014/12/the-state-of-javascript-in-2015/)
Why frameworks are evil (http://tomasp.net/blog/2015/library-frameworks/)
Angular history and design problem (http://www.quirksmode.org/blog/archives/2015/01/the_problem_wit.html)
A developer’s perspective after 2 years working in Angular (https://top.fse.guru/2-years-with-angular-b72a81f9e1ae#.iehqlfyqe)
Why ReactJS is awesome (http://jlongster.com/Removing-User-Interface-Complexity,-or-Why-React-is-Awesome)
Evolution of Flux frameworks (https://medium.com/@dan_abramov/the-evolution-of-flux-frameworks-6c16ad26bb31#.hdn1qo5m7)
Redux vs Flux (http://stackoverflow.com/questions/32461229/why-use-redux-over-facebook-flux)
Redux creator interview (http://survivejs.com/blog/redux-interview/)