官术网_书友最值得收藏!

  • Node.js Design Patterns
  • Mario Casciaro Luciano Mammino
  • 338字
  • 2021-06-18 18:15:05

2 The Module System

In Chapter 1, The Node.js Platform, we briefly introduced the importance of modules in Node.js. We discussed how modules play a fundamental role in defining some of the pillars of the Node.js philosophy and its programming experience. But what do we actually mean when we talk about modules and why are they so important?

In generic terms, modules are the bricks for structuring non-trivial applications. Modules allow you to pide the codebase into small units that can be developed and tested independently. Modules are also the main mechanism to enforce information hiding by keeping private all the functions and variables that are not explicitly marked to be exported.

If you come from other languages, you have probably seen similar concepts being referred to with different names: package (Java, Go, PHP, Rust, or Dart), assembly (.NET), library (Ruby), or unit (Pascal dialects). The terminology is not perfectly interchangeable because every language or ecosystem comes with its own unique characteristics, but there is a significant overlap between these concepts.

Interestingly enough, Node.js currently comes with two different module systems: CommonJS (CJS) and ECMAScript modules (ESM or ES modules). In this chapter, we will discuss why there are two alternatives, we will learn about their pros and cons, and, finally, we will analyze several common patterns that are relevant when using or writing Node.js modules. By the end of this chapter, you should be able to make pragmatic choices about how to use modules effectively and how to write your own custom modules.

Getting a good grasp of Node.js' module systems and module patterns is very important as we will rely on this knowledge in all the other chapters of this book.

In short, these are the main topics we will be discussing throughout this chapter:

  • Why modules are necessary and the different module systems available in Node.js
  • CommonJS internals and module patterns
  • ES modules (ESM) in Node.js
  • Differences and interoperability between CommonJS and ESM

Let's begin with why we need modules.

主站蜘蛛池模板: 庆元县| 宜州市| 龙井市| 宁乡县| 无为县| 西乌| 林芝县| 赤峰市| 竹北市| 灵台县| 佛山市| 江陵县| 浑源县| 什邡市| 来凤县| 武宁县| 辽宁省| 白沙| 平度市| 建水县| 太原市| 呼和浩特市| 永吉县| 龙口市| 永州市| 宜兰县| 竹北市| 横山县| 洞口县| 阿拉善左旗| 石楼县| 巴楚县| 正宁县| 湖南省| 年辖:市辖区| 铁岭市| 新干县| 丹东市| 定州市| 阿城市| 房产|