一. Common.js模块规范
node.js实现了Common.js模块规范化
1. 什么是 CommonJS 规范?
CommonJS 是为了实现 Javascript 的模块化,而制定的一套规范;
2. 为什么 Javascript 需要模块化?
浏览器中的Javascript有没有实现模块化?(在一个JS文件中,能不能引用另外JS文件中的方法)
有了模块,我们就可以更方便地使用别人的代码,想要什么功能,就加载什么模块。
3. 如何实现 Javascript 的模块化?
为了统一大家编写模块时候的规则,方便各模块之间的依赖和调用,于是 CommonJS 规范就应运而生了。
4. 那么,CommonJS 模块化规范,到底是个什么东西??
定义了什么是模块?
一个JS模块中,如何引入其它的JS模块?
一个JS模块中,如何向外暴露一些成员,供其它模块调用;
如果没有类似于 CommonJS 的规范,行不行?
只有大家遵守同样的规范,才能够协作开发,方便别人,同时也方便自己;
二. 包
英文名叫做 Packages,包是在模块基础上更深一步的抽象,目的是:方便分发推广基于 CommonJS 规范实现的 应用程序 或 类库;
包可以看作是 模块、代码 和 其它资源 组合起来形成的 独立作用域;
符合规范的包结构
包都要以一个单独的目录而存在;
package.json 必须在包的顶层目录下;
package.json 文件必须符合 JSON 格式,并且必须包含如下三个属性:name(包的名字), version, (包的版本号),main, (包入口文件)
Javascript代码应该在lib目录下;
文档应该在doc目录下;
单元测试应该在test目录下;
Node.js对包要求并没有那么严格,只要顶层目录下有package.json,并符合基本规范即可;
包描述文件package.json的一些常用项
name:包的名称,必须是唯一
description:包的简要说明
version:符合语义化版本识别规范的版本字符串
keywords:关键字数据,通常用于搜索
maintainers:维护者数组,每个元素要包含name、email、web等
contributors:贡献者数组,格式与maintainers相同。包的作者应该是贡献者数据的第一个元素
bugs:提交bug的地址,可以是网址或者电子邮件地址
licenses:许可证数组,每个元素要包含type和url字段
repositories:仓库托管地址数组,每个元素要包含type、url和path字段
dependencies:包的依赖,一个关联数组,由包名称和版本号组成。
devDependencies:开发依赖项,表示一个包在开发期间用到的依赖项
三. npm
npm的两层含义
NPM 是一个 第三方模块的托管网站,指的就是;
NPM 是Node的包管理工具(全名叫做 Node package manager),在安装Node时候,就已经自动安装了 NPM 这个管理工具;
安装和卸载全局包
什么是全局的包:通过 npm install 包名 -g 方式安装的包,都安装到了全局;一般全局的安装目录是C:Users自己的用户文件夹AppDataRoamingnpm
如何安装一个全局的包:npm install i5ting_toc -g, 注意:这里的-g表示全局安装包的意思i5ting_toc为包名;
注意:一般,只有一些工具,才有全局安装的必要性;
如果要全局卸载某个包,比如要卸载 i5ting_toc了,直接运行npm uninstall i5ting_toc -g就可以全局卸载包了!
安装和卸载本地包
什么是本地的包:跟着项目安装的包,叫做本地包;
如果拿到一个空项目,必须先初始化一个package.json的配置文件,npm init或者npm init -y
运行npm i 包名 --save去安装指定的包,本地安装的包,都安装到了node_modules的目录下
如果用的是npm 5.x的版本,可以不指定--save命令,如果用的是 npm 3.x 的版本,则需要手动指定 --save, 同时,--save有缩写形式,是:-S
package-lock.json文件中记录了曾经装过的包的下载地址,方便下次直接下载包;
其它常用命令
--save-dev它的缩写是-D
注意:dependencies节点,表示项目上线部署时候需要的依赖项;devDependencies节点,表示项目在开发阶段需要的依赖项,但是当项目要部署上线了,devDependencies节点中的包,就不再需要了!
注意:当使用npm i快速装包的时候,npm会检查package.json文件中,所有的依赖项,然后都为我们安装到项目中
--production 表示只安装 dependencies 节点下,记录的包,不安装devDependencies节点下的包;当项目要上线了,才会使用--production命令
解决 npm 下载慢问题
默认,NPM在下载包的时候,连接的是国外的服务器,所以,有时候如果网速不是特别好,可能下载不下来包;此时,可以安装一个工具,叫做nrm,里面记录了好多下载NPM包的服务器地址,可以让我们方便的切换下载包时候请求的服务器;
运行npm i nrm -g(注意:只要是工具,一般都是全局 -g 安装)
当装完 nrm 之后,可以运行nrm ls 查看所有可用的服务器列表
可使用nrm use 服务器名称来切换下载包时候的服务器地址
请先登录后,再回复
行家里手-技能共享平台