5.1什么是第三方模块

```
别人写好的,具有特定功能的,我们能直接使用的模块即第三方模块,由于第三方模块通常都是由多个文件组成并且被放置在一个文件夹中,所以又名包。
```

第三方模块有两种存在形式

  • 以js文件的形式存在,提供实现项目具体功能的API接口
  • 以命令行工具形式存在,辅助项目开发

5.2获取第三方模块

```
npmjs.com 第三方模块的存储和分发仓库
npm(node package manager): node 的第三方模块管理工具
```

  • 下载:npm install 模块名称
  • 卸载:npm uninstall package 模块名称

5.3全局安装与本地安装

  • 命令行工具:全局安装
  • 库文件:本地安装

5.4第三方模块 nodemon

```
nodemon是一个命令行工具,用以辅助项目开发
在Node.js中,每次修改文件都要在命令行工具中重新执行该文件,非常繁琐
```

使用步骤

```
1.使用npm install nodemon -g 下载它(mac 需要加前缀sudo)
2.在命令行工具中用nodemon 命令替代node 命令执行文件
```

5.5第三方模块 nrm

```
nrm(node registry manager): npm 下载地址切换工具
npm 默认的下载地址是国外,国内下载速度慢
```

使用步骤

```
1.使用npm install nrm -g 下载它
2.查询可用下载地址列表 nrm ls
3.切换npm 下载地址 nrm use 下载地址名称
```

5.6第三方模块 Gulp

```
基于node平台开发的前端构建工具
也就是将机械化操作编写成任务,想要执行机械化操作时执行一个命令行命令任务就能自动执行了
```

Gulp可以做什么?

  • 项目上线,html,css,js文件压缩合并
  • 语法转换(es6,less...)
  • 公共文件抽离
  • 修改文件浏览器自动刷新

Gulp中提供的方法

  • gulp.src():获取任务要处理的文件
  • gulp.dest():输出文件
  • gulp.task('任务名字',callback):建立gulp任务
  • gulp.watch():监控文件的变化

```
const gulp = require('gulp');
//使用gulp.task()方法建立任务
gulp.task('first',()=>{
//获取要处理的文件
gulp.src('./src/css/base.css')
//将处理后的文件输出到dist目录
.pipe(gulp.dest('./dist/css'));
});
```

使用步骤

```
1.使用npm install gulp 下载gulp库文件
2.在项目根目录下建立gulpfile.js文件
3.重构项目的文件夹结构src目录放置源代码文件dist目录放置构建后文件
4.在gulpfile.js文件中编写任务
5.在命令行工具中执行gulp任务
```

安装指定的Gulp版本

```
npm install gulp@3.9.1
```

安装Gulp命令行工具

```
npm install gulp-cli -g
clear清屏
gulp first执行first任务
```

Gulp插件

  • gulp-htmlmin:html文件压缩
  • gulp-csso:压缩css
  • gulp-babel:javaScript语法转化
  • gulp-less:less语法转化
  • gulp-uglify:压缩混淆JavaScript
  • gulp-file-include:公共文件包含
  • browsersync浏览器实时同步

node_modules文件夹的问题

```
1.文件夹以及文件过多过碎,当我们将项目整体拷贝给别人的时候,传输速度会很慢很慢
2.复杂的模块依赖关系需要被记录,确保模块的版本和当前保持一致,否则会导致当前项目运行报错
```

package.json文件的作用

```
1.项目描述文件,记录了当前项目信息,例如项目名称,版本,作者,github地址,当前项目依赖了哪些第三方模块等
2.使用npm init -y命令生成(不填写任何信息,都用默认值)
3.package.json文件中'scripts'存储的都是命令的别名
//基本使用
{
"script":{
"build":"nodemon app.js"
}
}
//一般情况下执行:nodemon app.js
//设置后:npm run build
```

项目依赖

```
1.在项目的开发阶段和线上运营阶段,都需要依赖的第三方包,称为项目依赖
2.使用npm install 包名命令下载的文件会默认被添加到package.json文件的dependencies字段中
3.如果只想安装项目依赖,命令行使用 npm install --production
```

开发依赖

```
1.在项目的开发阶段需要依赖,线上运营阶段不需要依赖的第三方包,称为开发依赖
2.使用npm install 包名 --save-dev 命令将包添加到package.json文件的devDependencies字段中
```

package-lock.json文件的作用

```
1.锁定包的版本,确保再次下载时不会因为包版本不同而产生问题
2.加快下载速度,因为该文件中已经记录了项目所依赖第三方包的树状结构和包的下载地址,重新安装时只需下载即可,不需要做额外的工作
```
```
//html任务
//1.html文件中代码的压缩操作
//2.抽取html文件中的公共代码
npm install gulp-htmlmin 下载gulp插件
npm install gulp-file-include 下载gulp插件
npm install gulp-less 下载gulp插件
npm install gulp-csso 下载gulp插件
npm install gulp-babel @babel/core @babel/preset-env 下载gulp插件
npm install gulp-uglify 下载gulp插件

//引用gulp插件

const gulp = require('gulp');

const htmlmin = require('gulp-htmlmin');

const fileinclude = require('gulp-file-include');

const less = require('gulp-less');

const csso = require('gulp-csso');

const babel = require('gulp-babel');

const uglify = require('gulp-uglify');

gulp.task('htmlmin',()=>{

gulp.src('./src/*.html')

.pipe(fileinclude())

.pipe(htmlmin({collapseWhitespace:true}))

.pipe(gulp.dest('dist'));

});

//命令行执行

gulp htmlmin

//引回公共代码

//@@include('路径‘)

//css任务

//1.less语法转换

//2.css代码压缩

gulp.task('cssmin',()=>{

//选择css目录下的所有less文件以及css文件

gulp.src(['./src/css/.less','./src/css/.css'])

//将less语法转换为css语法

.pipe(less())

//将css代码进行压缩

.pipe(csso())

//将处理的结果进行输出

.pipe(gulp.dest('dist/css'))

});

//命令行执行

gulp cssmin

//js任务

//1.es6代码转换

//2.代码压缩

gulp.task('jsmin',()=>{

gulp.src('/src/js/*.js')

.pipe(babel({

//它可以判断当前代码的运行环境 将代码转换为当前运行环境所支持的代码

presets:['@babel/env']

}))

.pipe(uglify())

.pipe(gulp.dest('dist/js'))

})

//命令行执行

gulp jsmin

//复制文件夹

gulp.task('copy',()=>{

gulp.src('./src/images/')

.pipe(gulp.dest('dist/images'));

gulp.src('./src/lib/
')

.pipe(gulp.dest('dist/lib'));

})

//命令行执行

gulp copy

//构建任务

gulp.task('default',['htmlmin','cssmin','jsmin','copy']);

//命令行执行

gulp default/gulp

05-Node.js学习笔记-第三方模块的更多相关文章

  1. 04 Node.js学习笔记之模块的加载

    A文件代码: //1.require是一个方法,它的作用就是用来加载模块的 console.log("执行 B ") require('./b.js'); console.log( ...

  2. 05 Node.js学习笔记之发送文件数据

    这章学习在NodeJs中如何将Html文件发送到客户端上,以及定义Content-Type内容类型 //1.载入http和fs模块 var http=require("http") ...

  3. Node.js学习笔记(2):基本模块

    Node.js学习笔记(2):基本模块 模块 引入模块 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式.在No ...

  4. 一点感悟:《Node.js学习笔记》star数突破1000+

    写作背景 笔者前年开始撰写的<Node.js学习笔记> github star 数突破了1000,算是个里程碑吧. 从第一次提交(2016.11.03)到现在,1年半过去了.突然有些感慨, ...

  5. Node.js学习笔记(3):NPM简明教程

    Node.js学习笔记(3):NPM简明教程 NPM常用操作 更新NPM版本 npm install npm -g -g,表示全局安装.我们可以指定更新版本,只需要在后面填上@版本号即可,也可以输入@ ...

  6. 系列文章--Node.js学习笔记系列

    Node.js学习笔记系列总索引 Nodejs学习笔记(一)--- 简介及安装Node.js开发环境 Nodejs学习笔记(二)--- 事件模块 Nodejs学习笔记(三)--- 模块 Nodejs学 ...

  7. Node.js学习笔记(1):Node.js快速开始

    Node.js学习笔记(1):Node.js快速开始 Node.js的安装 下载 官方网址:https://nodejs.org/en/ 说明: 在Windows上安装时务必选择全部组件,包括勾选Ad ...

  8. Node.js学习笔记(4):Yarn简明教程

    Node.js学习笔记(4):Yarn简明教程. 引入Yarn NPM是常用的包管理工具,现在我们引入是新一代的包管理工具Yarn.其具有快速.安全.可靠的特点. 安装方式 使用npm工具安装yarn ...

  9. Node.js学习笔记(二):模块

    模块是 Node.js 应用程序的基本组成部分,文件和模块是一一对应的.一个 Node.js 文件就是一个模块,这个文件可能是 JavaScript 代码.JSON 或者编译过的 C/C++ 扩展. ...

随机推荐

  1. 19.DjangoRestFramework学习二之序列化组件、视图组件

    一 序列化组件 首先按照restful规范咱们创建一些api接口,按照下面这些形式写吧: Courses --- GET ---> 查看数据----->返回所有数据列表[{},{},] C ...

  2. django学习03-模版

    新手做的笔记,很可能会有理解错误的地方.欢迎拍砖. 在polls/views.py中增加下面内容,完善功能. def detail(request, question_id): return Http ...

  3. Python3 猜年龄小游戏进阶之函数处理

    在猜年龄的基础上编写登录.注册方法,并且把猜年龄游戏分函数处理 登录函数 注册函数 猜年龄函数 选择奖品函数 # 注册 def register(): '''注册''' count = 0 while ...

  4. 分享一个mysql服务启动与关闭的bat文件

    有时候打开数据库可视化工具(sqlyog.navicat)连接数据库时,会出现以下报错信息. 大家都知道是数据库的服务没有启动. 所以我想给大家分享一个bat文件可供快速启动mysql的数据库的服务, ...

  5. 《Java知识应用》Linux系统下word转PDF

    仅供学习,如需商用请联系开发商:https://apireference.aspose.com/java/words Jar包下载路径: 链接: https://pan.baidu.com/s/1s7 ...

  6. 如何入侵SF服务器/充当GM刷元宝

    首要作者本人要声明一下,写下此文章技术不是教你去黑传奇SF,只是想以本文引起4F拥有者的留意方案,哈哈. 如何入侵传奇SF刷元宝,首先要温故下自己的专业技术水平. 我也非常喜欢玩游戏,但却玩得特别菜, ...

  7. jQuery模仿ToDoList实现简单的待办事项列表

    功能:在文本框中输入待办事项按下回车后,事项会出现在未完成列表中:点击未完成事项前边的复选框后,该事项会出现在已完成列表中,反之亦然:点击删除按钮会删除该事项:双击事项可以修改事项的内容.待办事项的数 ...

  8. 渗透测试初学者的靶场实战 3--墨者学院SQL注入—宽字节盲注

    墨者SQL注入-MYSQL数据库实战环境 实践步骤 1. 决断注入点 输入单引号,提示错误信息: 输入and 1=1 返回页面正常: 输入 and 1=2 返回正常 输入-1,返回异常: 2. 带入s ...

  9. 【译】ModSecurity事务生命周期

    本篇简要介绍ModSecurity Transaction Lifecycle,也即ModSecurity的事务生命周期. Transaction Lifecycle In ModSecurity, ...

  10. 如何从Mac删除恶意广告软件,摆脱那些通过弹出广告或工具栏入侵Mac的恶意软件

    厌倦了那些利用弹出式广告和工具栏之类入侵Mac的恶意软件?该如何摆脱Mac上的恶意软件呢?今天小编为大家带来两种方法从Mac 删除广告软件,甚至阻止它到达您的Mac,感兴趣的朋友一起来看看吧! 方法一 ...