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学习--常用模块的主要内容,如果未能解决你的问题,请参考以下文章

IOS开发-OC学习-常用功能代码片段整理

常用python日期日志获取内容循环的代码片段

nodejs常用代码片段

node.js 常用模块(初级)

Node.js process 模块常用属性和方法

extjs常用技巧