Modularizing project
Before ES6, there were a lot of module solutions for JavaScript that worked. The two most famous of them are AMD and commonjs. AMD is designed for asynchronous module loading, which is mostly applied in browsers, while commonjs does module loading synchronously, and that's the way the Node.js module system works.
To make it work asynchronously, writing an AMD module takes more characters. And due to the popularity of tools such as browserify and webpack, commonjs becomes popular even for browser projects.
The proper granularity of internal modules could help a project keep its structure healthy. Consider a project structure like this:
project ├─controllers ├─core │ │ index.ts │ │ │ ├─product │ │ index.ts │ │ order.ts │ │ shipping.ts │ │ │ └─user │ index.ts │ account.ts │ statistics.ts │ ├─helpers ├─models ├─utils └─views
Assume we...