node学习--常用模块
Posted 风起了--
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了node学习--常用模块相关的知识,希望对你有一定的参考价值。
Node的用处在于它本身提供的一系列的功能模块,用于与操作系统互动。常用内置模块如下:
path:处理文件路径
fs: 操作文件系统
child_process: 新建子进程
util: 提供一系列的实用小工具
http: 提供HTTP服务器功能
url:用于解析URL
querystring:解析URL中的查询字符串
crypto:提供加密和解密功能
注:包名如果跟内置模块重名,会优先加载内置模块,最好不要重名
在D:nodejs/node/1.js 新建一个1.js文件
1.在path文件操作的过程中,都必须使用物理路径(绝对路径)
常用的方法:
.join() 拼合路径
举例:
const path = require("path"); const temp = path.join(\'/bar\',\'foor\',\'/read/user\'); console.log(temp); // 输出 \\bar\\foor\\read\\user const temp1 = path.join(__dirname,\'李白.txt\'); // __dirname 这个js文件所在的路径,不包括 /fileName.js 这部分 console.log(temp1); //输出 D:\\nodejs\\node\\李白.txt
.basename() 获取文件路径下这个文件的名字
const temp1 = path.join(__dirname,\'李白.txt\'); console.log(path.basename(temp1)); //输出 李白.txt console.log(path.basename(temp1,\'.txt\')) // 输出不带后缀名的文件名 输出 李白
其实相当于切掉最后一块
console.log(path.basename(temp1,\'t\')) //输出 李白.tx
属性 .delimiter 获取不同操作系统中默认的路径分隔符 windows是; Linux是:
const path = require("path");
console.log(path.delimiter); //这里用windows 输出为 ;
//process.env 获取环境变量 ,其中有个path对象,得到环境变量的路径将其分隔 console.log(process.env.PATH.split(path.delimiter));
.dirname() .extname()
const path = require("path"); const temp1 = path.join(__dirname,\'李白.txt\'); //获取文件目录名称 console.log(path.dirname(temp1)); //输出 D:\\nodejs\\node //获取文件中的扩展名 console.log(path.extname(temp1)); //输出 .txt
.parse() 将 一个路径字符串转化为一个对象(包含文件目录,文件名,扩展名)
.format() 将文件对象转换为字符串
const path = require("path"); const temp1 = path.join(__dirname,\'李白.txt\'); console.log(path.parse(temp1));
const path = require("path"); const temp1 = path.join(__dirname,\'李白.txt\'); const obj = path.parse(temp1); console.log(path.format(obj));
isAbsolute() 判断一个路径是不是绝对路径,返回值是true/false
const path = require("path"); const temp1 = path.join(__dirname,\'李白.txt\'); console.log(path.isAbsolute(temp1)); //true console.log(path.isAbsolute("../etc/isAbsolute")); //false
2.文件操作 fs
readFile() 异步读取文件 readFile()
读取文件时没有指定编码默认读取的是一个Buffer(缓冲区),缓冲区就是内存中操作数据的容器,通过缓存区可以很方便的操作二进制数据,而且大文件操作时必须有缓存区。因为在Node中操作数据、网络通信是没有办法完全以字符串的方式操作的,所以用node实现了缓存区。
举例:
const path = require("path"); const temp1 = path.join(__dirname,\'李白.txt\'); const fs = require(\'fs\'); fs.readFile(temp1,\'utf-8\',(error,data) => { //加上编码,以文本方式读取,不会输出16进制 console.log(data); });
文件编码:windows 默认是gbk编码,但是 node不支持,统一使用utf-8编码
文件太大,读文件会出现卡顿,可以使用readline 模块
const path = require("path"); const temp1 = path.join(__dirname,\'李白.txt\'); const fs = require(\'fs\'); const readline = require(\'readline\');
//以流的方式读取文件 let streamReader = fs.createReadStream(temp1); let data = \'\'; streamReader.on(\'data\',(chunk) => { //chunk只是文档的一个片段,不完整 data += chunk.toString(); }); streamReader.on("end",() => { //通知你已经结束了,此时data是完整的 console.log(data); })
输出为:
单行读取文件
const path = require("path"); const temp1 = path.join(__dirname,\'李白.txt\'); const fs = require(\'fs\'); const readline = require(\'readline\'); let streamReader = fs.createReadStream(temp1); //利用readline 读取 let rl = readline.createInterface({ input:streamReader }); rl.on("line",(line) => { console.log(`单行的内容为:${line}`); })
输出为:
写文件 的三种方式 ,写文件默认会将原来的内容替换掉。可以追加appendFile()
//1.writeFile JSONstringfy() 序列化 JSONparse()反序列化
const path = require("path"); const temp1 = path.join(__dirname,\'李白.txt\'); const fs = require("fs"); fs.writeFile(temp1,JSON.stringify({id:10,name:"2333"}),(err)=>{ if(err){ console.log("error"); }else{ console.log("success"); } })
//2 fs.writeFileSync() //3 fs.createWriteStream() const path = require("path"); const temp1 = path.join(__dirname,\'李白.txt\'); const fs = require("fs"); let streamWrite = fs.createWriteStream(temp1); streamWrite.write("hello",(err)=>{ if(err){ console.log("error"); }else{ console.log("sucess") } })
3.url
处理HTTP请求时url
模块使用率超高,因为该模块允许解析URL、生成URL,以及拼接URL.
.parse()
方法来将一个URL字符串转换为URL对象
var url = require(\'url\'); var urlObject = url.parse("http://user:pass@host.com:8080/name?query=string$hash"); console.log(urlObject);
format()
方法允许将一个URL对象转换为URL字符串.
console.log(url.format(urlObject));
输出:http://user:pass@host.com:8080/name?query=string$hash
.resolve()
方法可以用于拼接URL
var url = require(\'url\');
var urlObject = url.resolve("http://user:pass@host.com",\'../bar/name\');
console.log(urlObject);
输出http://user:pass@host.com/bar/name
以上是关于node学习--常用模块的主要内容,如果未能解决你的问题,请参考以下文章