Node学习笔记2
1、模块
- 分类
- 内置模块
- 自定义模块(用户创建的每个js文件)
- 第三方模块
加载模块使用require方法,可省略
.js
后缀名。
- 在自定义模块中定义的变量、方法等成员,只能在当前模块内被访问。
2、module对象
- 在每个
.js
自定义模块中都有一个module对象,它里面存储了和当前模块有关的信息。 - 在自定义模块中,可以使用module.exports对象,将模块内的成员共享出去,供外界使用。外界使用require方法导入自定义模块时,得到的就是module.exports所指向的对象。
- 注意点:
1)
2)require模块时,得到的永远是module.exports指向的对象。
注:为了防止混乱,不要在同一个模块中同时使用exports和module.exports。
3、包与npm
-
Node.js中的第三方模块又叫做包。
-
包和npm的介绍
- 安装包
npm install xxx/npm i xxx
初次装包完成后,会多一个名为node_modules的文件夹和package.json的配置文件。
● node_modules文件夹用来存放所有已安装到项目中的包。require()导入第三方的包,就是从这个目录中查找并加载包。 ● package.json配置文件用来记录node_modules目录下的每一个包的下载信息,例如包的名字、版本号、下载地址等。
注:不要手动修改node_modules或package-lock.json文件中的任何代码啊,npm包管理工具会自动维护它们。
-
可以用@符号来指定具体的版本。
-
包的语义化版本规范
-
npm包管理配置文件
-
package.json作用
- 快速创建package.json
npm init -y
- 上述命令只能在英文的目录下成功运行!所以,项目文件夹的名称一定要使用英文命名,不要使用中文,不能出现空格。
- 运行npm install命令安装包的时候,npm包管理工具会自动把包的名称和版本号,记录到package.json中。
- dependencies节点【开发和上线部署均需使用到的包】专门用来记录npm install命令安装了哪些包。
- 一次性安装所有的包
npm install/npm i
执行npm install命令时,npm包管理工具会读取package.json中的dependencies节点,读取到记录的所有依赖包名称和版本号之后,npm包管理工具会把这些包一次性下载到项目中。
- 卸载包
npm uninstall/npm uni
- devDependencies节点【仅在开发阶段使用的包】
// 安装指定的包,并记录到devDependencies节点中
npm i 包名 -D
// 注意:上述命令的简写形式,等价于下面的完整写法
npm install 包名 --save-dev
- 切换淘宝镜像源
// 查看当前下包的镜像源
npm config get registry
// 将下包的镜像源切换为淘宝镜像源
npm config set registry=https://registry.npm.taobao.org/
可以安装nrm(NPM registry manager)在不同镜像源之间快速切换。
4、包的分类&规范的包结构
- 包的分类
- 项目包(安装到node_modules目录中的包)
- 开发依赖包(记录到devDependencies节点中的包,在开发期间会用到)
- 核心依赖包(记录到dependencies节点中的包,在开发和项目上限之后均会用的包)
- 全局包(只有工具性质的包,才有全局安装的必要性)
补充:i5ting_toc:一个可以把md文档转为html页面的小工具。
- 规范的包结构
5、编写包、发布包
-
编写包略。
-
发布包
npm login
npm publish
注:
-
在运行npm login命令之前,必须先把下包的服务器地址切换为npm的官方服务器,否则会导致发布包失败。
-
将终端切换到包的根目录之后,运行npm publish命令,即可将包发布到npm上【注:包名不能雷同】
- 删除已发布的包
npm unpublish xxx --force
- npm unpublish命令只能删除72小时以内发布的包
- npm unpublish删除的包,在24小时内不允许重复发布
- 发布包的时候要慎重,尽量不要往npm上发布没有意义的包!
6、模块的加载机制
- 优先从缓存中加载
- 内置模块加载优先级最高
- 自定义模块的加载机制
- 第三方模块的加载机制
- 目录作为模块
7、npx学习
-
npx是npm软件包提供的命令,它是node.js平台下软件包执行器。主要用途有两个,第一个是临时安装软件包执行后删除它;第二个是执行本地安装的提供命令的软件包。
-
nvm、nodejs、npm、npx的辨析
- node.js是js的编译运行环境,能编译写的js代码,并让计算机识别运行。
- nvm(node version management)node版本管理工具。为了解决不同版本之间的兼容性问题。
- npm(node package management)node.js第三方插件的管理工具
- npx:用于无侵入式地执行命令
- npx的优势