Difference between Common JS and ECMAScript(ES)

Priyanshu SidarPriyanshu Sidar
3 min read

Common JS and ES(ECMAScript) Modules are two different ways of organizing and sharing JavaScript code. Here's a breakdown of their key differences:

CommonJS

  • Synchronous loading: Modules are loaded and executed in order, blocking the execution of the rest of the code until the module is fully loaded.

  • require() and module.exports: Used for importing and exporting modules.

  • Dynamic imports: Can be used to load modules conditionally at runtime.

  • Primarily used in Node.js: Was the original module system for Node.js.

ES Modules

  • Asynchronous loading: Modules can be loaded in parallel, improving performance.

  • import and export: Used for importing and exporting modules, with a more declarative syntax.

  • Static analysis: Imports and exports can be analyzed before runtime, enabling optimizations like tree shaking (removing unused code).

  • Native browser support: Supported in modern browsers.

Different ways to configure Common JS modules

  • Files with a .js extension when the nearest parent package.json file doesn't contain a top-level field "type"

  • Files with a .js extension when the nearest parent package.json file contains a top-level field "type" with a value of "commonjs".

      //package.json
    
      "type":"commonjs"
    
  • Files with .cjs extension. Eg. user.cjs

Different ways to configure ECMAScript modules

  • Files with .js extension when the nearest parent package.json file contains a top-level field "type" with a value of "module".

  • Files with .mjs extension. Eg. user.mjs

Why was ES6 special and highlighted?

You're right to notice that JavaScript has continued to evolve beyond ES6! While ES6 (ECMAScript 2015) was a major milestone, subsequent versions like ES11 and ES13 have introduced even more features and improvements.

Here's why ES6 still holds a special place and is often specifically highlighted:

  • A Fundamental Shift: ES6 was a game-changer. It brought in a wealth of new features that significantly altered how JavaScript code is written, including:

    • let and const: Improved variable scoping and immutability.

    • Arrow functions: More concise function syntax and better this handling.

    • Template literals: Easier string manipulation and interpolation.

    • Classes: A more familiar syntax for object-oriented programming.

    • Modules: Native support for organizing and sharing code.

    • Promises: A cleaner way to handle asynchronous operations.

  • Widely Adopted and Supported: ES6 features have been thoroughly integrated into browsers and JavaScript environments. This means that code written with ES6 is generally well-supported and can be used in a wide range of projects.

  • Foundation for Later Versions: ES6 laid the groundwork for many of the features introduced in later versions. Understanding ES6 is crucial for grasping the concepts and syntax of more recent JavaScript updates.

  • Learning Curve: For many developers, ES6 represented a significant leap in JavaScript development. It introduced new concepts and syntax that required time and effort to learn. This is why it's often emphasized in learning materials and discussions.

0
Subscribe to my newsletter

Read articles from Priyanshu Sidar directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Priyanshu Sidar
Priyanshu Sidar