React.js

From DevSummit
Jump to: navigation, search

Main Frameworks in the space

Angular js- was the first big thing 5 years ago. Still actively used but there is limited upgrade path in the version process. Sponsored by Google. Good for larger more enterprise single page apps, not great for smaller apps. Angular 1 has a large community but Angular 2 has a much smaller community upgrade path is an issue.


Uses Type Script which a superset of js backed by Microsoft and Google


React -is the more recent and more popular. Built by Facebook. Easy to learn because there are resources but it is not super easy to learn. It is a large files size for a small slice of js functionality. React is just the view layer. You are making a lot more decisions on how you implement the pattern and can use starter kits that are available. You need Flux for managing data. It should have a good upgrade path and will get a lot faster over time compared to Angular. Supports virtual dom back to IE8 along with event system, part of the reason why it is so large. It is very very fast due to how it interacts with the dom. Does not have a templating system but uses jsx. Uses one way data binding to a state handling tool such as Redux.


Vue.js – newer framework that is getting popular. Fairly lightweight framework that uses the best parts of both react and angular. No corporate sponsorship but fastest growing community. Fastest pathway for getting up and running. Thin like React but has core packages that can be pulled in as standard parts of the framework. Native tools are being developed but not supported. Has a templating system that you can use or you can use jsx. Supports 2 way data binding to sync data and state.


Others old less supported frameworks: Ember, Backbone, metor, polymer, aurelia


Jquery manipulates data directly in the DOM while other frameworks have virtual or shadow DOMs


Web components standard is now implemented in all modern browsers and can support custom elements. This is an important place to start for building js applications which build web components using html5 components. Organization can have a components library it can use across applications


How I do get started?

Look for something lightweight that has a simple problem to solve within other projects.


For a more complex approach go the head less option. You can use the CMS to do the rendering and publishing as a single page js app over a json api. This could have a lot of issues.



Other considerations

Search engines can have trouble interpreting non renderer js unless they are server side rendered.


Tooling can be very complex and have a lot of requirements.