node.js四个常用包
const http=require('http');//建立服务
const fs=require('fs');//文件相关操作
const querystring=require('querystring');//解析解析url参数
const url = require('url');//处理url
指定文件写入数据
指定文件写入数据如果没有那个文件则创建
fs.writeFile(path,data,calback(err))
path:路径
data:数据
callback:回调函数
读取指定文件
fs.readFile(path,callback(err,data))
创建服务
let server=http.createServer((req,res)=>{
//req:接收请求
//res:发送请求
}).listen(8080)
request相关方法
- req.method:获取页面请求方式(post/get)
- res.write(data):页面写入数据
- res.end();数据写入完毕
- res.url:返回用户请求的url
解析get&post
get
第一种方法
let [url,query] = req.url.split('?');//将地址与参数分隔
let get = querystring.parse(query);//解析get数据
{name:test,pwd:123}
第二种方法
let result = url.parse(req.url,true);//第二个参数为true表示一并解析get数据
//将地址与get数据分开
let {path,data} = url.parse(req.url,true);
post
//由于post数据较大时是分段发送的因此服务器要分段接收
let arr = [];//定义一个数组接收post数据
req.on('data',buffer=>{
//如果有post数据过来将其添加到数组
arr.push(buffer);
});
req.on('end',()=>{
let buffer = Buffer.concat(arr);
//当数据发送完毕时,使用buffer对象连接数据
querystring.parse(buffer);
//利用querystring解析post数据类似于name=er$pass=45
//解析为 {name:er,pass:45}
})
node模块
定义模块
1.定义模块
一个文件就是一个模块
通过module对象 实现批量导出
module.exports={
a:12,b:45
}
通过exports对象导出一个
exports.a = 12;
//导出函数
exports.funcname=function(){}
引入模块
const mode = require('./mode.js')//必须加路径
如果不想加路径,直接把模块放在node_modules目录
const mode = require('mode');
console.log(mode.a)
常用系统模块
- 1.assert:断言
assert(条件,‘条件不成立输出的信息’)
可用在大型模块/函数,每一阶段断言测试或函数参数校验
assert.deepEqual(变量,预期值,msg)比较 成员相当于==
assert.deepStrictEqual(变量,预期值,msg) 深度比较相对于===
- 2.path:路径
路径拼接,信息获取
path.dirname(url) 返回文件目录
path.extname(url) 返回文件扩展名
path.basename(url) 返回文件名.扩展名
path.resolve() 将路径解析单一路径
如
path.resolve('root/a/b','../c','build','..','scrt');
//返回 root/a/c/scrt
获取当前文件的绝对路径
path.resolve(__dirname,'build')
//返回www/text/build
- 3.url :网址
url.parse(str);解析网址相关信息.
url.parse(str.true);将url参数解析为json格式 - 4.querystring :请求数据
querystring.parse(url参数) 将url参数解析json
…stringify({a:1:b2}) 将json转译为url参数形式