In the world of scalable JavaScript, when we say an application is modular, we often mean itâs composed of a set of highly decoupled, distinct pieces of functionality stored in modules. Loose coupling facilitates easier maintainability of apps by removing dependencies where possible. When this is implemented efficiently, itâs quite easy to see how changes to one part of a system may affect another.
Unlike some more traditional programming languages, the current iteration of JavaScriptâECMA-262âdoesnât provide developers with the means to import such modules of code in a clean, organized manner. Itâs one of the concerns with specifications that hasnât required great thought until more recent years when the need for more organized JavaScript applications became apparent.
Instead, developers at present are left to fall back on variations of the module or object literal patterns, which we covered earlier in the book. With many of these, module scripts are strung together in the DOM with namespaces being described by a single global object where itâs still possible to incur naming collisions in our architecture. Thereâs also no clean way to handle dependency management without some manual effort or third-party tools.
While native solutions to these problems will be arriving in ES Harmonyâlikely to be the next version of JavaScriptâthe good news is that writing modular JavaScript has never been easier, and we can start doing it today.
In this section, weâre going to look at three formats for writing modular JavaScript: AMD, CommonJS, and proposals for the next version of JavaScript, Harmony.
Get Learning JavaScript Design Patterns now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.