October 2017: added more links and possible alternatives.
Here is a list of the best articles, books and talks about the libraries and tools we use at the Here product tools team.
You can start from a very good introduction to modern frontend tooling.
#ECMAScript 6
Thanks to Babel we can write in ECMAScript 2015.
Consider using TypeScript.
#React
Our view layer is React.
#Redux
Redux is an app state container. It means that we store the whole application state (data from server and UI state) in a single immutable tree.
Redux was inspired by the original Facebook’s Flux architecture:
After using Redux for a while, I feel that it’s too low level and requires you to write a lot of code. Consider using MobX.
#Immutable.js
Redux requires that all the data in the store should be immutable. Immutable.js makes work with immutable data structures easier and (potentially) faster.
After using Immutable for a while, I feel that it makes more problems than it solves. Consider using seamless-immutable.
#CSS Modules
CSS modules are like BEM but they provide real class names uniqueness. And you don’t need to write long class names manually. We use CSS modules with Sass and Autoprefixer.
Consider using CSS in JS library, like JSS or styled-components.
#Webpack
Webpack allows us to use ES6/JSX syntax (including ECMAScript 2015 modules), import modules from npm and use hot reloading to debug frontend code. To simplify webpack configuration and share it between projects we use webpack-blocks.
Consider using Create React App to bootstrap your app.
#Testing
To test React components we use Jest (a test runner) and Enzyme (a testing utility for React).
#Other useful libraries
Unfortunately, I haven’t found any good articles about these libraries.
These tools are as useful as all the resources mentioned above.
We also use lint-staged and husky to run linters on precommit hook.
Let me know if I’ve missed something, I highly appreciate any additions to this list.