Node.js第三方模块

1.nodemon–自动更新命令行

ctrl+s 后自动更新命令行

npm install nodemon -g

2.nrm–下载地址切换工具

下载地址切换工具

    npm install nrm -g

3.gulp–代码处理

html css js压缩 es6语法切换,less转换 公共文件抽离

//下载gulp模块
npm install gulp
//全局下载gulp命令工具
npm install gulp-cli -g 

//引入第三方模块gulp
const gulp = require('gulp');

gulp中的插件 (需在npm中下载再引用)

//html文件压缩
const htmlmin = require('gulp-htmlmin');
//抽取公共代码
const fileinclude = require('gulp-file-include');
//less语法转换
const less = require('gulp-less');
//css文件压缩
const csso = require('gulp-csso');
//js语法转换
const babel = require('gulp-babel');
//压缩javascript
const uglify = require('gulp-uglify');

//gulp.task() // 建立gulp任务
//gulp.src()  // 获取任务要处理的文件
//gulp.dest() // 输出文件
//.pipe()     // 处理
gulp.task('xxx', () => {
	gulp.src('./src/*.html')
		.pipe(fileinclude())
		// 压缩html文件中的代码
		.pipe(htmlmin({ collapseWhitespace: true }))
		.pipe(gulp.dest('dist'));
});

4.mime–返回资源类型

根据请求分析资源类型,把类型返回

npm install mime

const mime = require('mime');

5.mongoose–操作数据库

操作数据库

npm install mongoose

// 引入mongoose第三方模块 用来操作数据库
const mongoose = require('mongoose');

eg:数据库操作

// 引入mongoose第三方模块 用来操作数据库
const mongoose = require('mongoose');
// 数据库连接
mongoose.connect('mongodb://localhost/playground', { useNewUrlParser: true})
	// 连接成功
	.then(() => console.log('数据库连接成功'))
	// 连接失败
	.catch(err => console.log(err, '数据库连接失败'));
// 创建集合规则
const courseSchema = new mongoose.Schema({
	name: String,
	author: String,
	isPublished: Boolean
});
// 使用规则创建集合// 1.集合名称// 2.集合规则
const Course = mongoose.model('Course', courseSchema) // courses
// 向集合中插入文档
Course.create({name: 'Javascript123', author: '黑马讲师', isPublished: false})
	  .then(result => console.log(result))

6.art-template–模板引擎拼接字符串

让开发者以更加友好的方式拼接字符串,使项目代码更加清晰、更加易于维护

npm install art-template

const template = require('art-template');

//art-template同时支持两种模板语法:标准语法和原始语法。
//标准语法: {{ 数据 }}      可以让模板更容易读写
//原始语法:<%=数据  %>	 具有强大的逻辑处理能力

7.dateFormat–修改日期格式

修改日期格式

npm install dateformat

const dateFormat = require('dateformat');

8.serve-static–静态资源访问

静态资源访问模块

npm install serve-static

// 引入静态资源访问模块
const serveStatic = require('serve-static');
// 实现静态资源访问服务
const serve = serveStatic(path.join(__dirname, 'public'))

9.router–路由模块

路由模块

npm install router

// 引入router模块
const getRouter = require('router');
// 获取路由对象
const router = getRouter();
//get
router.get('/add', (req, res) => {
	let html = template('index.art', {});
	res.end(html);
})
//post
router.post('/add', (req, res) => {
    }

10.Express框架

  • 提供了方便简洁的路由定义方式
  • 对获取HTTP请求参数进行了简化处理
  • 对模板引擎支持程度高,方便渲染动态HTML页面
  • 提供了中间件机制,有效控制HTTP请求
  • 拥有大量第三方中间件对功能拓展
npm install express

// 引入express框架
const express = require('express');
// 创建网站服务器
const app = express();
app.get();
app.post();
app.use();// 接收所有请求的中间件
// res.send()
// 1. send方法内部会检测响应内容的类型
// 2. send方法会自动设置http状态码
// 3. send方法会帮我们自动设置响应的内容类型及编码
app.use('/static',express.static(path.join(__dirname, 'public'))); //获取静态资源--express.static();实现静态访问功能
req.query //获取get参数,框架内部将其转为对象格式再返回
req.body  //获取post参数,需下载第三方模块body-parser
express.Router(); //创建页面路由
express.redirect(); //重定向

11.body-parser--获取post参数(Express下)

获取post参数

//获取post参数,对象格式
npm install body-parser

const bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({extended: false}));//阻止所有请求 extended: false->不使用第三方模块解析,直接使用当前
req.body //获取post参数,框架内部将其转为对象格式再返回

12.express-art-template–模板引擎(Express下)

express下模板引擎

npm install art-template express-art-template  //需同时下载两个

// 告诉express框架模板所在的位置
app.set('views', path.join(__dirname, 'views'));
// 告诉express框架模板的默认后缀是什么
app.set('view engine', 'art');
// 当渲染后缀为art的模板时 所使用的模板引擎是什么
app.engine('art', require('express-art-template'));

13.bcrypt–密码加密

密码加密

npm install bcrypt //(管理员安装)

// 导入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(明文密码, 加密密码);

bcrypt 依赖的其他环境

//1. python 2.x 需配置环境变量
//2. node-gyp 
npm install -g node-gyp
//3. windows-build-tools (管理员安装)
npm install --global --production windows-build-tools

14.express-session–把数据存储在服务器端(Express下)

npm install express-session

//引入express模块
const session = require('express-session'); //在node中使用express-session模块实现session功能
app.use(session({secret: 'secret key'}));   //配置session

15.joi–最强大的JavaScript 模式描述语言和数据验证器

//引入joi模块
const Joi = require('joi')

module.exports = async(req, res) => {
    //定义对象的验证规则
    const schema = Joi.object({
            username: Joi.string().min(2).max(10).required().error(new Error('用户名不符合规则')),
            email: Joi.string().email().required().error(new Error('邮箱格式不符合要求')),
            password: Joi.string().regex(/^[a-zA-Z0-9]{3,30}$/).required().error(new Error('密码不符合规则')),
            role: Joi.string().valid('normal', 'admin').required().error(new Error('角色值不符合规则')),
            state: Joi.number().valid(0, 1).required().error(new Error('状态值不符合规则'))
        })
        //用try{}catch(){}语句来捕获异步函数的异常
    try {
        //实施验证
        await schema.validateAsync(req.body)
    } catch (e) {
        //验证没有通过
        //e.message
        //重定向回用户添加页面
        res.redirect(`/admin/user-edit?${e.message}`)
    }

}

16.formidable–文件上传功能

npm install formidable
// 引入formidable第三方模块
const formidable = require('formidable');
const path = require('path');

module.exports = (req, res) => {
    const form = formidable({
        multiples: true,
        //保留上传文件的后缀
        keepExtensions: true,
        //配置上传文件的存放位置
        uploadDir: path.join(__dirname, '../', '../', 'public', 'uploads')
    });
    // 4.解析表单
    form.parse(req, (err, fields, files) => {
        // 1.err错误对象 如果表单解析失败 err里面存储错误信息 如果表单解析成功 err将会是null
        // 2.fields 对象类型 保存普通表单数据
        // 3.files 对象类型 保存了和上传文件相关的数据
        // res.send(files.cover.path.split('public')[1])
        res.send(files)
    });
    // res.send('ok');
}

//文件上传提交表单时,表单数据必须以二进制方式上传
//enctype 指定表单数据的编码类型
默认值: enctype="application/x-www-form-urlencoded" //name=zhangsan&age=20
二进制: enctype="multipart/form-data"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值