总结Node.js的常用模块
本篇文章给大家分享的内容是总结Node.js的常用模块,有着一定的参考价值,有需要的朋友可以参考一下
Node.js原生模块
querystring
作用:将查询字符串转换为对象
引用:
var qs = require("querystring");
常用API:
qs.parse(str);
示例:
const qs = require("querystring"); var url = "uname=lilei&upwd=123456"; var obj = qs.parse(url); console.log(obj);
输出:
{ uname: 'lilei', upwd: '123456' }
url
作用:将url地址各个部分转换为js对象属性
引用:
var url = require("url");
常用API:
1、var obj = url.parse(u)
作用:将地址解析为<schema>://<net_loc>/<path>;<params>?<query>#<fragment>
示例:
var url = require("url"); var u = " var obj = url.parse(u); console.log(obj);// Url { // protocol: 'http:', // slashes: true, // auth: null, // host: ' // port: null, // hostname: ' // hash: null, // search: '?uname=lilei', // query: 'uname=lilei', // pathname: '/index.html', // path: '/index.html?uname=lilei', // href: 'http://www.baidu.com/index.html?uname=lilei' // }
2、var obj = url.parse(u,true)
作用:同解析,但是可以通过obj.query.xx访问查询字符串
示例:
var url = require("url"); var u = " var obj = url.parse(u,true); var uname = obj.query.uname;console.log(uname); //lilei
fs
作用:操作文件系统中文件或目录
引用:
var fs = require("fs");
常用API:
阻塞状态下:
var data = fs.readFileSync(fileName); 作用:读取文件
fs.writeFileSync(fileName,str/buf); 作用:写入文件
fs.appendFileSync(fileName,str/buf); 作用:追加字符串进入文件
示例:
const fs = require("fs"); var str = "这是一段文字"; var fileName = "./index.html"; var data = fs.readFileSync(fileName); console.log(data.toString()); /*<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>欢迎访问Node服务器</h1> </body> </html> */ var fileName = "./name.log"; fs.writeFileSync(fileName,str); var str1 = "这是一段追加文字"; fs.appendFileSync(fileName,str1);
什么是阻塞?
由于Node.js是单线程,一个程序只能等待另一个程序执行完毕后执行,故这种等待的状态叫做阻塞
非阻塞状态下API:
fs.readFile(fileName,(err,data)=>{}); 读取文件内容
fs.writeFile(fileName,(err,data)=>{}); 写入文件
fs.appendFile(fileName,(err,data)=>{});追加写入文件
示例:
const fs = require("fs"); var str = "这是一段文字"; var fileName = "./index.html"; fs.readFile(fileName,(err,data)=>{ if(err) throw err; console.log(data.toString()); /*<!DOCTYPE html> <html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>欢迎访问Node服务器</h1> </body> </html> */ }) fs.writeFile(fileName,str,(err)=>{ if(err) throw err; console.log("写入成功"); }) fs.appendFile(fileName,str,(err)=>{ if(err) throw err; console.log("追加成功"); })
http模块
作用:可用于编写一个基于http协议客户端程序(浏览器),也可以编写一个基于http协议的服务器端程序(apache)
案例:使用http协议编写一个web服务器
const http = require("http"); var server = http.createServer(); server.listen(3000); server.on("request",(req,res)=>{ //req对象:客户请求消息 //res对象:服务器响应对象 //解析客户请求消息 //向客户端输出相应消息 console.log("node服务器接收到相应"); })
-----------------------------------------------------------------------------------------------------------------
第三方模块
mysql
引入:
const mysql = require("mysql");
使用案例:
const mysql = require("mysql"); var conn = mysql.createConnection({ host:"127.0.0.1", user:"root", password:"", port:3306, database:"database"}); var sql = "select * from database";conn.query(sql,(err,result)=>{ if(err) throw err; console.log(result); //result 为最终查询结果 });
注:
数据库中常见安全漏洞:sql注入
利用特殊字符 # ' or1=1 DROP select info完成对数据入侵操作
node.js解决方案
sql占位符
SELECT aid FROM xz_admin WHERE aname = ? ANDapwd = md5(?)
conn.query(sql,["tom","123"]);
使用“池”
作用:
提高效率,打打减少创建连接与关闭连接所需要的时间
如何使用
const mysql = require("mysql"); var pool = mysql.createPoolCluster({ host:"127.0.0.1", user:"root", password:"", port:3306, database:"database", connectionLimit:5 }) var sql = "select * from database"; pool.query(sql,(err,result)=>{ if(err) throw err; console.log(result); //result 为最终查询结果 });
以上就是总结Node.js的常用模块的详细内容,更多请关注其它相关文章!