node.js+koa常用模块汇总

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_33036599/article/details/83269039

一、node.js内置模块

  1. crypto
    作用:加密模块。提供了多种加密方法,如对用户密码加密后存储到数据库时使用。
    使用:

    	//加密模块
    	const crypto = require('crypto');
    	
    	const KEY = "dancy" + 5201314; //每一个密码读增加一个5201314,增加密码复杂度
    	
    	//console.log(crypto.getHashes()); //获取哈希加密的方式
    	
    	const obj = crypto.createHash('md5');
    	obj.update(KEY);
    	
    	const password = obj.digest("hex"); // 采用十六进制的方式(hex)输出加密的结果,只能输出一次
    	
    	console.log(password);
    
  2. path
    作用:路径模块,提供多种路径处理模块,常用到其中的join方法拼接路径。
    使用:

    const Koa = require('koa');
    const cors = require('@koa/cors'); //解决跨域模块
    const static = require('koa-static'); //静态资源处理模块
    const router = require("./router");
    const koaBody = require('koa-body'); //处理post请求数据
    const { join } = require('path');
    
    const app = new Koa();
    
    app.use(cors());
    
    app.use(static(join(__dirname, 'static'))); // 静态资源中间件最好放在路由注册之前
    
    app.use(koaBody());
    
    app
    	.use(router.routes())
    	.use(router.allowedMethods())
    	.listen(3000);
    
  3. fs
    作用:文件系统,提供多个文件操作api。
    爬虫案例:

    const Koa = require('koa');
    const cheerio = require('cheerio');
    const request = require('superagent');
    const fs = require('fs');
    const { join } = require('path');
    
    const app = new Koa();
    const name = 'echarts';
    
    request
    	.get('https://www.bootcdn.cn/' + name)
    	.end((err, res) => {
    		const $ = cheerio.load(res.text);
    		let data = [];
    
    		fs.mkdirSync("files/" + name);
    
    		$(".package-version").each((index, val) => {
    			let obj = {
    				version: $(val).prev().text().slice(3),
    				links: []
    			}
    
    			$(val).find(".list-group-item>span").each((i, v) => {
    				let link = $(v).text();
    				obj.links.push(link);
    				//if(link == "https://cdn.bootcss.com/jquery/3.3.0/jquery.js") {
    					fs.mkdir("files/" + name + "/" + obj.version, "0o777", (err)=>{
    						request
    							.get(link)
    							.buffer(true) // application/x-javascript类文件需要添加
    							.end((err, res) => {
    								if(res) {
    									fs.writeFile(join(__dirname +  "/files/" + name + "/", obj.version + link.slice(link.lastIndexOf("/"))), res.text, (err) => {
    										if (err) throw err;
    									});
    								}
    							})
    					});
    				//}
    			})
    
    			data.push(obj)
    		});
    		app.use( async (ctx, next) => {
    			ctx.body = JSON.stringify(data);
    		});
    	});
    
    app.listen(3000);
    
  4. stream
    作用:流模块,常用语文件读写。
    使用:

    const fs = require('fs');
    const Readable = require('stream').Readable;
    
    const read = fs.createReadStream('1.txt'); //创建一个可读流,默认二进制
    const write  = fs.createWriteStream("2.txt"); //创建一个可写流
    const writeR = fs.createWriteStream("3.txt");
    
    read.pipe(write); // 将1.txt的内容通过管道复制到2.txt
    
    //read.setEncoding("utf8");
    
    //read.resume(); //释放数据,让数据流动起来,但无法接收数据
    
    //let res = "";
    //read.on("data", data => { //释放数据,并可以接收数据
    //	res += data
    //})
    //
    //read.on("end", () => {
    //	console.log("读取结束");
    //})
    
    const rs = new Readable;
    rs.setEncoding("utf8");
    rs.push("1");
    rs.push("2");
    rs.push(null);
    
    rs.pipe(writeR);
    
  5. assert
    作用:断言模块
    使用:

    const assert = require('assert');
    
    //assert.ok(0, '如果前面第一个参数的布尔值不为true,则显示这里的报错信息');
    //assert.equal(0.1+0.2, 0.3, '如果前面第一个参数不等于第二个参数,则显示这里的报错信息'); // 内部使用的是等于 ==
    //assert.equal(1+2, true, '如果前面第一个参数不等于第二个参数,则显示这里的报错信息'); // 有数字参与的一般会转为数字 true会被转为1
    
    /**
     * assert.strictEqual() 内部使用的是严格等于 ===
     * assert.notStrictEqual() 内部使用的是 !==
     * assert.deepEqual() 用于判断对象,只要两个对象的属性一一对应同时值相等则相等 值比较时使用的是 ==
     * assert.deepStrictEqual() 值比较时使用的是 ===
     */
    
    try {
    	assert.nodeDeepEqual({a: '1'}, {a: 1}, '报错信息');
    } catch (error) {
    	console.log(1)
    }
    
  6. http
    作用:创建node.js服务器,一般使用koa、express等框架搭建,使用node.js原生http模块的较少。
    使用:

    const http = require('http');
    
    const server = http.createServer((req, res) => {
    	res.writeHead(200, {"Content-Type": "text/plain; charset=utf-8"});
    	/** res.writeHead设置响应头
    	 * params
    	 *  200: 状态码
    	 *  obj: 响应头参数
    	 */
    
    	//res.setHeader("Access-Control-Allow-Origin", "*") 设置允许跨域
    
    	if(req.url === "favicon.ico") return;
    	//res.write('向客户端返回数据');
    	res.end(JSON.stringify(req.headers)); // 声明响应结束,参数只能传字符串
    })
    
    server.listen(3000);
    

    更多nodejs模块请参考 node.js中文网

二、第三方模块

  1. koa-router
    作用:监听路由,编写接口时使用
    安装:npm i -S koa-router
    npm: https://www.npmjs.com/package/koa-router
  2. koa-static
    作用:前端静态文件、图片等静态资源处理模块。配置静态资源目录后,将不会出现静态资源not found错误。
    安装:npm i -S koa-static
    npm:https://www.npmjs.com/package/koa-static
  3. koa-body
    作用:处理post请求数据,也提供了文件上传功能。
    安装:npm i -S koa-body
    npm:https://www.npmjs.com/package/koa-body
  4. koa-views
    作用:模板引擎解析,如使用pug模板或其他模板引擎时,则需要此模块配置视图模板。
    安装:npm i -S koa-views
    npm:https://www.npmjs.com/package/koa-views
  5. koa-session
    作用:登录状态验证。当我们实现了用户登录注册时,某些功能需要确认用户的登录状态才能继续操作,此时则需要运用到此模块。
    npm:https://www.npmjs.com/package/koa-session
  6. koa-logger
    作用:日志模块
    安装:npm i -S koa-logger
    npm:https://www.npmjs.com/package/koa-logger
  7. koa-multer
    作用:文件上传模块
    安装:npm i -S koa-multer
    npm:https://www.npmjs.com/package/koa-multer
  8. cheerio
    作用:筛选网页信息,写网络爬虫时常用。api和jquery类似
    安装:npm i -S cheerio
    npm:https://www.npmjs.com/package/cheerio
  9. superagent
    作用:获取网页内容,通过node.js发送请求时使用, 写网络爬虫时常用。
    安装:npm i -S superagent
    npm:https://www.npmjs.com/package/superagent
  10. mongoose
    作用:连接MongoDB数据库、操作MongoDB数据库时使用。提供了很多MongoDB数据库相关api。
    安装:npm i -S mongoose
    官网:https://mongoosejs.com/docs/index.html
  11. @koa/cors
    作用:解决跨域问题。
    安装:npm i -S @koa/cors
    npm:https://www.npmjs.com/package/@koa/cors
  12. koa-compress
    作用:资源压缩模块,提高传输效率。
    安装:npm i -S koa-compress
    npm:https://www.npmjs.com/package/koa-compress

猜你喜欢

转载自blog.csdn.net/qq_33036599/article/details/83269039
今日推荐