Node.js第三方模块

一、获取第三方模块

npm(node package manager):node的第三方模块管理工具

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

二、package.json文件

node_modules文件夹以及文件过多过碎,当我们将项目整体拷贝给别人的时候,,传输速度会很慢很慢.
复杂的模块依赖关系需要被记录,确保模块的版本和当前保持一致,否则会导致当前项目运行报错
项目描述文件,记录了当前项目信息,例如项目名称、版本、作者、github地址、当前项目依赖了哪些第三方模块等。

  1. 使用npm init -y命令生成。
  2. 生成package.json文件,使用npm install 下载的文件会默认添加到package.json文件中
    详情链接:详情链接

三、第三方模块列举

1.nodemon

nodemon是一个命令行工具,用以辅助项目开发。
用node运行,每次修改文件都要在命令行工具中重新执行该文件,nodemon可以在每次js文件保存后,自动重新运行

使用步骤:

  1. 使用npm install nodemon -g 下载
  2. 在命令行工具中用nodemon命令替代node命令执行文件

2.nrm

npm下载地址切换工具
npm默认的下载地址在国外,国内下载速度慢

使用步骤:

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

3.gulp

将机械化操作编写出任务,想要执行机械化操作时执行一个命令行命令任务就能自动执行了
具体插件使用

能做什么:

  • 项目上线,HTML,CSS、JS文件压缩合并
  • 语法转换(es6、less…)
  • 公共文件抽离
  • 修改文件浏览器自动刷新

使用步骤:

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

提供的方法

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

代码示例:

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

gulp插件

需要npm install 下载

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

4.Mongoose

使用Node.js操作MongoDB数据库需要依赖

  • 使用npm install mongoose命令下载
  • 在命令行工具中运行net start mongoDB即可启动MongoDB

5.art-template模板引擎

使用步骤:

  1. 在命令行工具中使用 npm install art-template下载
  2. 使用const template = require(‘art-template’)引入模板引擎
  3. 告诉模板引擎要拼接的数据和模板在哪 const html = template(‘模板路径’, 数据);
  4. 使用模板语法告诉模板引擎,模板与数据应该如何进行拼接

模板语法

  • art-template同时支持两种模板语法:标准语法原始语法

  • 标准语法可以让模板更容易读写,原始语法具有强大的逻辑处理能力。

  • 标准语法: {{ 数据 }}

  • 原始语法:<%=数据 %>

原文输出

如果数据中携带HTML标签,默认模板引擎不会解析标签,会将其转义后输出。

  • 标准语法:{{@ 数据 }}
  • 原始语法:<%-数据 %>
 <!-- 标准语法 -->
 <h2>{{@ value }}</h2>
 <!-- 原始语法 -->
 <h2><%- value %></h2>

条件判断

 <!-- 标准语法 --> 
 {{if 条件}} ... {{/if}}
 {{if v1}} ... {{else if v2}} ... {{/if}}
 <!-- 原始语法 -->
 <% if (value) { %> ... <% } %>
 <% if (v1) { %> ... <% } else if (v2) { %> ... <% } %>

循环

  • 标准语法:{{each 数据}} {{/each}}
    -原始语法:<% for() { %> <% } %>
<!-- 标准语法 -->
 {{each target}}
     {{$index}} {{$value}}
 {{/each}}
  <!-- 原始语法 -->
 <% for(var i = 0; i < target.length; i++){ %>
     <%= i %> <%= target[i] %>
 <% } %>

子模版

  • 标准语法:{{include ‘模板’}}
  • 原始语法:<%include(‘模板’) %>
  <!-- 标准语法 -->
 {{include './header.art'}}
  <!-- 原始语法 -->
 <% include('./header.art') %>

代码示例:

 // 导入模板引擎模块
 const template = require('art-template');
 // 将特定模板与特定数据进行拼接
 const html = template('./views/index.art',{
    data: {
        name: '张三',
        age: 20
    }
 }); 
 <div>
    <span>{{data.name}}</span>
    <span>{{data.age}}</span>
 </div>

6.express-art-template模板引擎

为了使art-template模板引擎能够更好的和Express框架配合,模板引擎官方在原art-template模板引擎的基础上封装了express-art-template。

  • 使用npm install express-art-template命令进行安装。
  // 当渲染后缀为art的模板时 使用express-art-template
 app.engine('art', require('express-art-template'));
  // 设置模板存放目录
 app.set('views', path.join(__dirname, 'views'));
  // 渲染模板时不写后缀 默认拼接art后缀
 app.set('view engine', 'art');
 app.get('/', (req, res) => {
     // 渲染模板
     res.render('index');
 }); 

7 .formidable

作用:解析表单,支持get请求参数、post请求参数、文件上传。

//引入formidable模块
const formidable = require('formidable');
//创建表单解析对象
const form = new formidable.IncomingForm();
//设置文件上传路径
form.uploadDir = '/my/dir';
//是否保留表单上传文件的扩展名
form.keepExtensions = true;
//对表单进行解析
form.parse(req,(err,fields,files)=>{
	//fields 存储普通请求参数
	//files 存储上传的文件信息
});

8.router

实现路由

  • 使用npm install router下载
const getRouter = require('router')
const router = getRouter();
router.get('/add', (req, res) => {
    res.end('Hello World!')
}) 
server.on('request', (req, res) => {
    router(req, res)
})

9.serve-static

功能:实现静态资源访问服务

使用步骤

  1. 使用 npm install serve-static下载
  2. 引入serve-static模块获取创建静态资源服务功能的方法
  3. 调用方法创建静态资源服务并指定静态资源服务目录
  4. 启用静态资源服务功能
const serveStatic = require('serve-static')
const serve = serveStatic('public')
server.on('request', () => { 
    serve(req, res)
})
server.listen(3000)

10.express框架

Express是一个基于Node平台的web应用开发框架,它提供了一系列的强大特性,帮助你创建各种Web应用。

  • 使用npm install express命令下载

特性

  • 提供了方便简洁的路由定义方式
  • 对获取HTTP请求参数进行了简化处理
  • 对模板引擎支持程度高,方便渲染动态HTML页面
  • 提供了中间件机制有效控制HTTP请求
  • 拥有大量第三方中间件对功能进行扩展
 // 引入Express框架
 const express = require('express');
 // 使用框架创建web服务器
 const app = express();
 // 当客户端以get方式访问/路由时
 app.get('/', (req, res) => {
    // 对客户端做出响应 send方法会根据内容的类型自动设置请求头
    res.send('Hello Express'); // <h2>Hello Express</h2> {say: 'hello'}
 });
 // 程序监听3000端口
 app.listen(3000);

11.body-parser

功能:接收post请求参数

 // 引入body-parser模块
 const bodyParser = require('body-parser');
 // 配置body-parser模块
 app.use(bodyParser.urlencoded({ extended: false }));
 // 接收请求
 app.post('/add', (req, res) => {
    // 接收请求参数
    console.log(req.body);
 }) 

12.config

作用:允许开发人员将不同运行环境下的应用配置信息抽离到单独的文件中,模块内部自动判断当前应用的运行环境,
并读取对应的配置信息,极大提供应用配置信息的维护成本,避免了当运行环境重复的多次切换时,手动到项目代码
中修改配置信息

使用步骤

  1. 使用npm install config下载模板
  2. 在项目的根目录下新建config文件夹
  3. 在config文件夹下面新建default.json、development.json、production.json文件
  4. 在项目中通过require方法,将模块进行导入
  5. 使用模块内部提供的get方法获取配置信息

13.密码加密 bcrypt

哈希加密是单程加密方式:1234 => abcd
在加密的密码中加入随机字符串可以增加密码被破解的难度。
依赖环境安装

// 导入bcrypt模块
const bcrypt = require('bcrypt');
// 生成随机字符串 gen => generate 生成 salt 盐
let salt = await bcrypt.genSalt(10);
// 使用随机字符串对密码进行加密
let pass = await bcrypt.hash('明文密码', salt);

// 密码比对
let isEqual = await bcrypt.compare('明文密码', '加密密码');

14.Joi

JavaScript对象的规则描述语言和验证器

//示例代码:
const Joi = require('joi');
const schema = {
	username:Joi.string().alphanum().min(3).max(30).reuqired().error(new Error('错误信息')),
	password:Joi.string().regex(/^[a-zA-Z0-9]{3,30}$/),
	access_token:[Joi.string(),Joi.number()],
	birthyear:Joi.number().integer().min(1900).max(2021),
	email:Joi.string().email()
};
//验证
Joi.validate({ username:'abc', birthyear:1994 },schema);

解释:错误解释

15.express-session

在node.js中需要借助express-session实现session功能

const session = require('express-session');
app.use(session({ secret: 'secret key' }));

16. dateformat

作用:处理时间格式

  • 使用npm install dateformat下载
// 导入
const dateFormat = require("dateformat");
var now = new Date();

dateFormat(now, "dddd, mmmm dS, yyyy, h:MM:ss TT");
// Saturday, June 9th, 2020, 5:46:21 PM
dateFormat(now,'yyyy-mm-dd')
//2021-04-26

17.mongoose-sex-page数据分页

  • 使用npm install mongoose-sex-page下载
const pagination = require('mongoose-sex-page');
// page:指定当前页
// size:指定每页显示的数据条数
// display:指定客户端要显示的页码数量
// exec():向数据库发出查询请求
pagination(集合构造函数).page(1).size(20).display(8).exec();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值