Even though JavaScript initially had no built-in packaging and namespacing support like other programming languages, web developers filled the gaps by defining and adopting some design patterns for this purpose. These software development practices worked around the missing features of JavaScript and allowed large and scalable implementations of complex applications on a programming language that some years ago was mostly used for form validation.
This was until the 6th version of JavaScript, commonly referred to as ES6, was released as a standard on June 2015 and introduced the concept of Modules as part of the language.
Note
ES6 is an abbreviation of ECMAScript 6th edition, which is also referred to as Harmony or ECMAScript 2015, where ECMAScript is the term that is used for the standardization process of JavaScript. The specification can be found at http://www.ecma-international.org/ecma-262/6.0/index.html#sec-modules.
As an example of ES6 Modules, we will see one...