Node.js 由三部分组成:ECMAScript 核心 + 全局成员 + 模块成员。
- 核心模块: 随着Node.js的安装包,一同安装到本地的模块,叫做核心模块。eg:fs,path等模块,都是由Node.js官方提供的核心模块。
- 第三方模块: 一些非官方提供的模块,如果大家需要使用某些第三方模块,必须去一个叫做 NPM 的网站上搜索并下载才能使用。
- 用户自定义模块: 程序员在自己项目中写的Javascript 文件。
第三方模块
第三方模块两种存在形式:
- 以js文件的形式存在,提供实现项目具体功能的API接口。
- 以命令行工具形式存在,辅助项目开发
获取第三方模块:
- npmjs.com:第三方模块的存储和分发仓库。
- npm(Node Package Manager):node的第三方模块管理工具,npm是整个Node.js社区最流行、支持第三方模块最多的包管理器。
Node.js包
- .英文名叫做
Packages
,包是在模块基础上更深一步的抽象 - 包的目的:方便分发和推广基于 CommonJS 规范实现的 应用程序 或 类库
- 包可以看作是模块、代码 和 其它资源组合起来形成的独立作用域
规范的包结构:
- 包都要以一个单独的目录而存在
- package.json(包描述文件) 必须在包的顶层目录下;
- package.json 文件必须符合 JSON 格式,并且必须包含如下三个属性:name, version, main
name: 包的名字
version: 包的版本号
main: 表示包的入口文件 - 二进制文件应该在bin目录下;
- javaScript代码应该在lib目录下;
- 文档应该在doc目录下;
- 单元测试应该在test目录下;
- Node.js对包要求并没有那么严格,只要顶层目录下有package.json,并符合基本规范即可
包描述文件 package.json:
列举当前项目所依赖的包;指定当前项目所使用的的包的版本;实现可重用的构建,更易于其他开发人员分享包。
package.json文件的作用:
- 锁定包的版本,确保再次下载时不会因为包版本不同而产生问题。
- 加快下载速度,因为该文件中已经记录了项目所依赖 第三方包的树状结构和包的下载地址,重新安装时只需下载即可,不需要做额外的工作。
使用 npm init -y
命令生成。
注意: 在传输项目时,因为node_modules文件夹所占内存较大,因此不需要传输node_modules文件夹,接收者可通过package.json文件的记录项使用 npm install
下载当前项目所依赖的第三方模块。
- name:包的名称,必须是唯一
- description:包的简要说明
- version:符合语义化版本识别规范的版本字符串
- keywords:关键字数据,通常用于搜索
- maintainers:维护者数组,每个元素要包含name、email、web可选字段
- contributors:贡献者数组,格式与maintainers相同。包的坐着应该是贡献者数据的第一个元素
- bugs:提交bug的地址,可以是网址或者电子邮件地址
- licenses:许可证数组,每个元素要包含type和url字段
- repositories:仓库托管地址数组,每个元素要包含type、url和path字段
- dependencies:包的依赖,一个关联数组,由包名称和版本号组成
- devDependencies:开发依赖项,表示一个包在开发期间用到的依赖项
项目依赖:
- 在项目的开发阶段和线上运营阶段,都需要依赖的第三方包,称为项目依赖。
- 使用
npm install 包名
命令下载的文件会默认被添加到 package.json 文件的dependencies
字段。
开发依赖:
- 在项目的开发阶段需要依赖,线上运营阶段不需要依赖的第三方包,称为开发依赖。
- 使用
npm install 包名 --save-dev
命令将包添加到package.json文件的devDependencies
字段 中
npm
npm组成部分:
- Web网站:用来查找包、设置配置文件以及管理npm应用的其他方面,例如,可以为自己的公司设置公共或私有包的访问管理。
- 命令行接口:包管理器,大多数开发人员会通过它来使用包。
- 注册中心:提供JavaScript软件及其元数据信息的大型公共数据库,也就是官方仓库。
npm命令:
- 升级npm:
npm install npm -g
(-g是安装参数,代表全局安装) - 安装本地包:
npm install 包名
- 安装指定版本的包:
npm install 包名@版本号
- 查看当前配置:
npm config ls
- 安装全局的包:
npm install -g 包名
全局的包的默认安装路径为:C:\Users\***\AppData\Roaming\npm
更改全局包和缓存的安装路径:
- 在想更改的目录下新建两个文件夹:node_global和node_cache
- 打开命令提示符,执行:
npm config set prefix “路径node_global”
npm config set cache “路径\node_cache”
可以通过npm config ls 命令查看配置结果- 成功后设置环境变量,在path变量下增加"路径node_global"
-
查看安装信息:
查看当前目录下安装的包:npm list
查看全局安装的包:npm list -g
-
创建默认的package.json:
npm init --yes
-
安装在开发与测试环境下使用的包:
npm install 包名 --save-dev
(会在package.json文件中加入"devDependencies"节点) -
安装在生产环境中使用的包:
npm install 包名
(会在package.json文件中加入"dependencies"节点) -
包的升级:
升级当前目录下指定的包:npm update 包名
升级全局的包:npm update -g 包名
-
包的卸载:
卸载"dependencies"节点下的包(生产环境):npm uninstall 包名
卸载"devDependencies"节点下的包(开发与测试环境):npm uninstall 包名 --save-dev
卸载全局的包:npm uninstall -g 包名
-
清空npm的本地缓存:
npm cache clean
-
发布自己开发的包:
在npm服务器上注册账号
使用npm publish
发布 -
安装淘宝的npm镜像:在安装包时,用cnpm命令行工具代替npm:
npm install -g cnpm --registry=https://registry.npm.taobao.org
nodemon模块
模块的作用:
nodemon是一个命令行工具
,用以辅助项目开发。在Node.js中,可以在每次修改文件后重新执行该文件。
使用步骤:
- 下载:
npm install nodemon -g
- 在命令行工具中使用nodemon命令代替node命令执行文件
模块加载顺序
- 从缓存中加载
- 加载核心模块
- 加载文件模块
- 文件夹作为模块
加载package.json文件指定的文件
加载index.js文件
加载index.node文件 - 从node_modules目录加载
- 从全局目录加载
- 循环加载