目录
一.fs
1.读取文件目录
2.创建文件(覆盖写入)
3.将数据追加到文件
4.读取文件
5.删除文件
二.URL
url结构组成:
1.url字符串转对象
2.url对象转字符串
三.qs (querystring)
1.字符串转对象
2.对象转字符串
3.编码
4.解码
使用node.js的模块之前需要在使用的js中引入相应模块
如:
let fs=require('fs');
let url=require('url');
let qs=require('querystring');
fs模块内的方法均有同步和异步操作,如读取文件夹的同步操作为fs.readdirSync(path[, options])
,异步操作为fs.readdir(path[, options], callback)
同步读取: fs.readdirSync(path[, options])
其中path为文件夹路径,[ ]中的内容可以不写
let dirs=fs.readdirSync('./');
console.log(dirs);
异步读取:fs.readdir(path[, options], callback)
其中path为文件夹路径,[ ]中的内容可以不写,callback是回调函数
回调有两个参数 (err, files)
,其中 files
是目录中文件名的数组
err默认为null,当执行出现错误时,err为错误
let dirs=fs.readdir('./',(err,data)=>{
if(err){
console.log(err);
}else{
console.log(data);
}
})
console.log(dirs);
fs.writeFile(file, data[, options], callback)
其中file为文件名或文件描述符,data为文件内容,callback为回调函数
当 file
是文件名时,将数据异步地写入文件,如果文件已存在则替换该文件。 data
可以是字符串或缓冲区。
当 file
是文件描述符时,其行为类似于直接调用 fs.write()
fs.writeFile('next.txt','今天是个好日子',(err,data)=>{
if(err){
console.log(err);
}
})
fs.appendFile(path, data[, options], callback)
异步地将数据追加到文件,如果该文件尚不存在,则创建该文件。 data
可以是字符串或
其中path为文件名或文件描述符,data为追加内容,callback为回调函数
fs.appendFile('next.txt','加油加油',(err)=>{
console.log(err);
})
fs.readFile(path[, options], callback)
异步地读取文件的全部内容
path为文件名或文件描述符,callback为回调函数
fs.readFile('next.txt',(err,msg)=>{
if(err){
console.log(err);
}else{
console.log(msg.toString('UTF-8')); //默认读取二进制数据流
}
})
fs.unlink(path, callback)
异步地删除文件或符号链接。 除了可能的异常(err)之外,没有为完成回调提供任何参数
path为文件名或文件描述符,callback为回调函数
fs.unlink('./next.txt',(err)=>{
if(err){
console.log(err);
}
})
注:fs.unlink()
不适用于目录,无论是空目录还是其他目录。 要删除目录,请使用fs.rmdir()
URL代表着是统一资源定位符(Uniform Resource Locator),是一个给定的独特资源在 Web 上的地址,理论上说,每个有效的 URL 都指向一个唯一的资源。
网址字符串是包含多个有意义组件的结构化字符串。 解析时,将返回包含每个组件的属性的网址对象。
url.parse(urlString[, parseQueryString[, slashesDenoteHost]])
urlString为要解析的 URL 字符串
let url=require('url');
let urlString='https://nodejs.org/dist/v18.15.0/docs/api/url.html';
let urlobj=url.parse(urlString)
console.log(urlobj);
输出结果为:
Url {
protocol: 'https:',
slashes: true,
auth: null,
host: 'nodejs.org',
port: null,
hostname: 'nodejs.org',
hash: null,
search: null,
query: null,
pathname: '/dist/v18.15.0/docs/api/url.html',
path: '/dist/v18.15.0/docs/api/url.html',
href: 'https://nodejs.org/dist/v18.15.0/docs/api/url.html'
}
url.format(urlObject)
urlobject为网址对象
url.format()
方法返回从 urlObject
派生的格式化网址字符串。
let obj={
protocol: 'https:',
slashes: true,
auth: null,
host: 'nodejs.org',
port: null,
hostname: 'nodejs.org',
hash: null,
search: null,
query: null,
pathname: '/dist/v18.15.0/docs/api/url.html',
path: '/dist/v18.15.0/docs/api/url.html',
href: 'https://nodejs.org/dist/v18.15.0/docs/api/url.html'
}
let string=url.format(obj);
console.log(string);
输出结果为:
https://nodejs.org/dist/v18.15.0/docs/api/url.html
node:querystring
模块提供了用于解析和格式化网址查询字符串的实用工具
querystring.parse(str[, sep[, eq[, options]]])
将网址查询字符串 (str
) 解析为键值对的集合
str
要解析的网址查询字符串sep
用于在查询字符串中分隔键值对的子字符串。 默认值: '&'
eq
用于分隔查询字符串中的键和值的子字符串。 默认值: '='
let qs=require('querystring');
let string='name=hahaha&key=lalala&pass=123';
let obj=qs.parse(string)
console.log(obj); //{ name: 'hahaha', key: 'lalala', pass: '123' }
querystring.stringify(obj[, sep[, eq[, options]]])
该方法通过遍历对象的 "自有属性" 从给定的 obj
生成 URL 查询字符串。
obj为要序列化为网址查询字符串的对象
let strings=qs.stringify(obj,'#','-');
console.log(strings); //name-hahaha#key-lalala#pass-123
querystring.escape(str)
该方法以针对网址查询字符串的特定要求优化的方式对给定的 str
执行网址百分比编码。
let ojb=qs.escape(strign)
console.log(ojb); //w%3D%E4%BD%A0%E5%A5%BD%E5%91%80%26name%3Dhaha
querystring.unescape(str)
方法在给定的 str
上执行网址百分比编码字符的解码。
let strgin=qs.unescape(ojb);
console.log(strgin); //w=你好呀&name=haha
参考文档:Index | Node.js v18.16.0 Documentation (nodejs.org)