Modular programming is a concept closely related to OOP that encourages us to structure code for better maintainability. In particular, JavaScript modules protect global scope from pollution, divide application code into multiple files, and allow the reuse of application components.
The two module API standards that are mostly used at the moment are AMD and CommonJS. The first one that is designed for in-browser use assumes asynchronous loading. The second is synchronous and intended for server-side JavaScript. However, you should know that AMD has a substantial flaw. A well-grained application design with a plenty of modules over HTTP/1.1 may cause a disaster in terms of application performance. This is the major reason why, recently, the practice of transpiling CommonJS modules for in-browser use is on the rise.
Both these APIs shall be considered as interim standards because the upcoming ES6 modules standard is meant to replace them. At the moment, there are no script engines supporting...