1、模块化
1.1 基本概念
模块化是指解决一个复杂问题时,自顶向下逐层把系统分为若干模块的过程,对于整个系统来说,模块是可组合、分解和更换的单元。
把代码进行模块化拆分的好处:
① 提高了代码的复用性
② 提高了代码的可维护性
③ 可以实现按需加载
1.2 模块化规范
模块化规范就是对代码进行模块化拆分与组合时需要遵守的规则,这样可以降低沟通成本,极大方便了各个模块之间的相互调用。
1.3 模块的分类
- 内置模块(Node.js 官方提供的,如 fs、path、http等,下载Node.js 时就自带)
- 自定义模块(用户创建的每个 js 文件都属于自定义模块)
- 第三方模块(由第三方开发,使用前需要先下载)
1.4 模块作用域
在自定义模块中定义的变量、方法等成员,只能在当前模块中被访问
那么如何将自己模块下的成员共享出去?
module 对象
在每个 .js 自定义模块中都有一个 module 对象,它里面存储了当前模块有关的信息
module.exports 对象
module 对象中包含 exports 对象,其实外界用 require() 方法导入自定义模块时,导入的就是 module.exports 对象,用module.exports 对象定义的成员,可以被共享出去。
为了简化向外共享成员的代码,Node 提供了 exports 对象,默认情况下,exports 和 module.eports 指向同一个对象,最终的共享结果,还是以 module.exports 指向的对象为准。
exports 和 module.exports 对象的使用误区
总而言之,共享的最终结果是 moule.exports 指向的对象。为了防止混乱,建议不要在同一模块下使用二者。
2、npm 与 包
Node.js 中第三方模块又叫做包,二者指的是同一个概念,只不过叫法不同。
包是基于内置模块封装出来的,提供了更高级、更方便的API,极大的提高了开发效率。
http://www.npmjs.com/ 网站可以搜索包
http://registry.npmjs.org/ 网站可以下载包
通过包管理工具(Node Package Manager,简称 npm 包管理工具),可以从服务器把需要的包下载到本地使用。
2.1 npm 初体验
在项目中安装包的命令时需要运行如下命令:
npm install 包的完整名称
简化: npm i 包的完整名称
可以通过 @ 符号 下载安装指定版本的包 : npm i 包的完整名称@版本号
卸载指定包:npm uninstall 包的完整名称
2.2 包管理配置文件
下载包之后,会自动创建 package.json 文件,记录了下载的包的信息。
其中有一个 dependencies 节点,专门用来记录使用 npm install 命令安装了哪些包。
2.3 解决下包速度慢的问题------淘宝 NPM 镜像服务器
npm 默认在国外服务器上下载, 淘宝在国内搭建了一个 镜像服务器,专门把国外官方服务器上的包同步到国内的服务器,极大提高了包的下载速度。
2.4 包的分类
项目包:被安装到项目的 node_modules 目录中的包,都是项目包。
- 开发依赖包(被记录到 devDependencies 节点中的包,只在开发期间会用到)
- 核心依赖包(被记录到 dependencies 节点中的包,在开发期间和项目上线之后都会用到)
全局包:在执行 npm install 命令时,如果提供了 -g 参数,则会把包安装为 全局包
规范的包的结构:
① 包必须以 单独的目录 而存在
② 包的顶级目录下要必须包含 package.json 这个包管理配置文件
③ package.json 中必须包含 name,version,main 这三个属性,分别代表包的名字、版本号、包的入口。