第三方模块
第三方模块是 Node.js 中没有的,而是其他开发者写好的、我们可以直接使用的模块,第三方模块通常由多个文件组成,放在一个文件夹中,又称为包。
第三方模块有两种存在方式:
- 以 js 文件存在提供实现功能的 API 接口
- 以命令行形式存在,辅助项目开发
Node.js 中的第三方模块通常存在 NPM 中:NPM官网
Node.js 内置了 npm 来对 NPM 官网中的内容进行安装,在终端中输入:npm -v
可以查看当前 npm 的版本。
- 安装模块命令:
npm install module_name
- 卸载模块命令:
npm uninstall module_name
nodemon 工具
nodemon 是一个命令行工具,用来替代 node 命令执行 js 文件,在之前的执行中。
如果使用 node 命令执行 js 文件,需要 ctrl+c 结束之后重新 node ***
来运行,当使用了 nodemon 允许 js 文件时,运行之后不会结束,而是监听当前文件中的保存操作,一旦保存,便重新执行当前 js 文件。
这对于做服务端的 Node.js 来说节省了开发人员每次 ctrl+c 结束运行、重新运行的时间。
安装命令如下:npm install nodemon -g
,-g
表示全局安装。
在 nodemon 执行一个文件之后,会一直监听用户的保存操作。直到按下 ctrl+c 结束。
nrm 工具
nrm 也是一个命令行工具,可以快速切换 npm 的下载地址。
- 安装:
npm install nrm -g
- 查询下载地址:
nrm ls
安装 nrm 之后使用 nrm ls
查询下载地址可能会出现下面的错误:
nrm : 无法加载文件 C:\Users\hc\AppData\Roaming\npm\nrm.ps1 ,因为在此系统上禁止运行脚本
,
这时右键 win 标,打开 PowerShell(管理员),输入如下指令:
set-ExecutionPolicy RemoteSigned
y
再次执行 nrm ls
,结果如下:
* npm -------- https://registry.npmjs.org/
yarn ------- https://registry.yarnpkg.com/
cnpm ------- http://r.cnpmjs.org/
taobao ----- https://registry.npm.taobao.org/
nj --------- https://registry.nodejitsu.com/
npmMirror -- https://skimdb.npmjs.com/registry/
edunpm ----- http://registry.enpmjs.org/
例如想要使用淘宝的 cnpm,输入 nrm use taobao
结果如下:
Registry has been set to: https://registry.npm.taobao.org/
再次执行 nrm ls
结果如下:
npm -------- https://registry.npmjs.org/
yarn ------- https://registry.yarnpkg.com/
cnpm ------- http://r.cnpmjs.org/
* taobao ----- https://registry.npm.taobao.org/
nj --------- https://registry.nodejitsu.com/
npmMirror -- https://skimdb.npmjs.com/registry/
edunpm ----- http://registry.enpmjs.org/
taobao
被选中
Gulp 模块
Gulp 的用处:
- HTML、CSS、JS 文件压缩合并
- 语法转换(ES6 -> ES5)
- 公共文件抽离
- 修改文件浏览器自动刷新
安装 Gulp
如果要使用 Gulp,需要以下步骤:
- 使用
npm install gulp
下载 gulp 库文件 - 在项目根目录下建立
gulpfile.js
文件 - 重构文件夹结构 src/dist,src 用来存放源代码,dist 用来存放编译后的文件
- 在
gulpfile.js
文件中编写任务 - 在命令行工具中执行 gulp 任务
另外,还需要下载 Gulp 的 cli 执行工具,使用 npm install gulp-cli -g
来安装
这里必须要使用全局安装,否则使用 gulp
执行任务时,系统找不到 gulp 指令。
Gulp 中提供的方法
gulp.task()
:建立 gulp 任务gulp.src()
:获取任务要处理的文件。可以处理多个文件,需要传入一个数组,数组中的元素可以是要修改的各个文件的名称和路径gulp.dest()
:输出文件的路径gulp.watch()
:监控文件的变化pipe()
:dest()
方法需要写在该方法中,下面插件中的操作也需要写在该方法中
我们需要在 gulpfile.js 文件中编写 gulp 任务。如下代码所示:
const gulp = require('gulp')
gulp.task('first', ()=>{
gulp.src('./src/HTML/index.html')
.pipe(gulp.dest('./dist/css'))
console.log('gilp的 first 任务执行成功!!!')
})
上述代码使用 gulp.task
建立了 gulp 任务,该方法接受两个参数,第一个参数是 gulp 任务名称,第二个参数为回调函数,在 task
方法内部创建该 gulp 任务所需的操作。
需要注意代码第 6 行,使用 src 获取了原目录之后,需要使用 pipe
方法,也就是说:所有对生成文件的操作,均需要在 pipe
方法中进行,然后在 pipe
方法中使用 dest
方法设置输出目录。
在项目的根目录中打开终端,输入如下指令:gulp first
,表示执行 gulpfile.js 中的 first 任务,输出如下:
[18:40:33] Using gulpfile E:\Git_Code\ricardo\Node.js\Gulp\gulpfile.js
[18:40:33] Starting 'first'...
gilp的 first 任务执行成功!!!
[18:40:33] The following tasks did not complete: first
[18:40:33] Did you forget to signal async completio