Stack of Development Need - rohit120582sharma/Documentation GitHub Wiki

Package Management

  • Problem: Need to organize your project and your dependencies
  • Solution: NPM
  • Reason: NPM is pretty much the de-facto package manager

JavaScript flavor

  • Problem: ECMAScript 5 sucks
  • Solution: ES6 & TypeScript
  • Reason: Interesting new features: arrow functions, module import/export capabilities, de-structuring, template strings, let and const, generators, promises.

Transpiling

  • Problem: Many browsers that are still massively in use don’t implement ES6. You need a program that translates/transpiles your modern ES6 into equivalent, well-supported ES5.
  • Solution: Babel
  • Reason: Works perfectly and it’s pretty much the de-facto standard. Transpiles server-side.
  • Notes: You will use babel-loader, a Webpack loader

Linting

  • Problem: There’s a zillion ways of writing JavaScript and consistency is hard to achieve. Coding standards need to be maintained and some bugs can be prevented with a linter.
  • Solution: ESLint
  • Reason: Great code insight and very configurable.

Bundling

  • Problem: You are no longer using a flat file or sequence of files. Dependencies need to be resolved and loaded properly.
  • Solution: Webpack
  • Reason: Highly configurable. Can load all sorts of dependencies and assets. It’s pluggable. It’s pretty much the de-facto bundler for React projects.
  • Notes: You should also learn about babel-loader, style-loader, css-loader, file-loader, url-loader.

UI framework / state management

  • Problem: This is one of the big ones. SPAs have grown more and more complex. Mutable state is particularly troublesome.
  • Solution: Angular and Redux
  • Reason: Instead of separating by technology "HTML/CSS/JavaScript" you break things up by their functionality "cohesive components". Your UI is a pure function of your state.

Unit testing

  • Problem:
  • Solution: Karma & Jasmine

Styling

  • Problem: Now that you have proper modules, you want them to be self-contained, reusable pieces of software that you can move around. Component styles should be as portable as the components themselves.
  • Solution: CSS modules