Module

Introduction

  • As our application grows bigger, we want to split it into multiple files, so called “modules”. A module may contain a class or a library of functions for a specific purpose.

  • But eventually scripts became more and more complex, so the community invented a variety of ways to organize code into modules, special libraries to load modules on demand.

AMD (Asynchronous Module Definition)

  • It is invented by RequireJS

  • Here is an example

// Define moduleA using AMD
define(function() {
    // Module implementation
    return {
        sayHello: function() {
            console.log("Hello from moduleA!");
        }
    };
});
// Load moduleA and use it
require(['moduleA'], function(moduleA) {
    moduleA.sayHello();
});

CommonJS

  • It is mainly designed for NodeJS usage

  • By default, NodeJS treats JavaScript code as CommonJS modules. Because of this, CommonJS modules are characterized by the require statement for module imports and module.exports for module exports.

ECMAScript 6 (ES6)

  • After javascript comes to version 6, import & export is added

  • Most of browser support es6, however, NodeJS default is using commonJS

  • In order to apply es6 on nodejs, it is recommended to use typescript for development, and compile in commonjs

  • After compiling into javascript

Syntax

  • Given the view1 module

  • would basically be equivalent to

  • In fact the first import above a shorthand for

ESNext

  • Targeting ESNext enables module system using the next version of JavaScript is, meaning it includes the latest proposals and features that may not be finalized yet.

References

Last updated