模块化编程
1.什么是模块
在node.js中,所谓的模块,就是一个文件,通常是js文件或json文件。
换言之,一个js文件就是一个模块。
模块是Node.js应用程序的基本组成部分。
2.为什么需要模块机制?
回顾一下,在浏览器为何需要模块化?
主要是解决两大问题:
全局变量污染
繁琐的文件依赖
到了服务端,情况是有些不同的。
在服务端,只有js代码,没有html。所以在服务端不可能借助script标签来引入js文件。
如何在一个js文件中,引入其他的js文件,需要一种机制来完成,这种机制就是模块机制。
为了让Node.js的文件可以相互调用,Node.js提供了一个简单的模块系统。
可以稍微回顾一下,模块化的发展简史:
萌芽时代,使用的编程技巧
09年Node.js在出现,实现了commonjs规范
三大派系之保守派,遵循了commonjs规范,提出了browserify工具
三大派系之革新派,提出了AMD规范,推出了require.js
三大派系之中立派,提出了CMD规范,推出了sea.js
es6,自己实现了export和import的模块化
而且,在node.js也会支持es6的模块化。
什么是CommonJs?
官方:
CommonJs规范主要弥补当前JavaScript没有标准的缺陷,它的终极目标是提供一个类似Python,Ruby和Java标准库。
- CommonJs 是 JavaScript 语言的模块化规范
- CommonJs 是模块化的标准,nodejs是CommonJs(模块化)的实现
CommonJs 是一种 JavaScript 语言的模块化规范,它通常会在服务端的 Nodejs 上使用。项目是由多个模块组成的,模块和模块之间的调用,需要各个模块有相同规范的 API,这样一来在使用的过程中不会有那么多的学习成本,并且对于单个模块来说是类聚的。
CommonJS模块的特点。
- 代码在模块作用域,不会污染全局作用域。
- 第一次加载某个模块时,Node会缓存该模块。以后再加载该模块,就直接从缓存取出该模块的module.exports属性。
- 模块加载的顺序,按照其在代码中出现的顺序。
模块化规范给项目带来极大的好处,在业务复杂,模块众多的大型项目中,开发者都遵循相同的规则来开发各自的模块,通过模块规范来约束,大家不需要太多的沟通或者大量的文档来说明自己的模块使用规则,成千上万的模块就这样生产,并能够容易的使用。它的意义不仅是让模块看起来很规范,在合作开发、社区中传播中也起到了重大的作用