node.js学习笔记--官方原生模块-queryString,url,Buffer

本文介绍了Node.js中几个重要的原生模块,包括querystring、url、Buffer和fs,以及http模块的基本使用方法。通过这些模块,开发者可以轻松处理HTTP请求、文件系统操作等常见任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.Node.js官方提供的原生模块 —— querystring

  querystring模块用于处理HTTP请求URL中的查询字符串

  var obj =qs.parse(str)             把查询字符串解析为JS对象

const qs = require("querystring");
//console.log(qs)
var str = 'uname=tom&upwd=1234&pno=3&kw=%E5%AD%A6%E4%B9%A0';//查询字符串
var obj = qs.parse(str);
console.log(obj);//{ uname: 'tom', upwd: '1234', pno: '3', kw: '学习' }
console.log(obj.kw);//学习

  var str = qs.stringify(obj)   把JS对象转换为查询字符串

var obj2 = {ename:"gemini",age:21,addr:"bj"};
var str2 = qs.stringify(obj2);
console.log(str2);//ename=gemini&age=21&addr=bj

2.Node.js官方提供的原生模块 —— url

  url模块用于解析一个HTTP请求地址,获取其中各个不同的部分

  var obj = url.parse( str )   把一个URL字符串解析为一个对象

  var obj = url.parse(str, true )   把一个URL字符串解析为一个对象,并把其中的查询字符串也解析为对象

const url = require("url");
//console.log(url);
var u = "https://qd:123@www.jd.com:443/ad/index?uname=gemini&pno=3#chapter3";
var obj1 = url.parse(u);
console.log(obj1);
var obj2 = url.parse(u,true);
console.log(obj2.query.uname);//gemini

3.Node.js官方提供的原生模块 —— Buffer

  Buffer:缓冲区,本质是一块内存区域,用于暂存以后要用到的数据(可能是数字、字符串、二进制图片/音视频等),该区域就称为“缓存”。

 CPU——>内存中缓存区——>硬盘

  //分配一个指定大小的缓冲区

       var buf1 = Buffer.alloc( 1024 );

  //使用一个数字数组创建一个缓冲区

       var buf2 = Buffer.from( [1, 3, 5] );

  //使用一个字符串创建一个缓冲区

       var buf3 = Buffer.from( 'abcdefg' );

  //把一个缓冲区中的数据转换为字符串

       var str = buf3.toString( );

//Buffer是全局模块,无需引用可以直接使用
var buf = Buffer.alloc(10);//分配10个字节大小的缓存区用于缓存数据,1字节=8比特位
console.log(buf);

var buf2 = Buffer.alloc(1024*3);//3KB
console.log(buf2);
console.log(buf2.length);
var buf5 = Buffer.from("一二三");
console.log(buf5);//一个汉字3个字节,一个UTF8汉字转成unicode码占3个字节
console.log(buf5.toString());
var buf3 = Buffer.from(['a','b','c']);
console.log(buf3);//<Buffer 00 00 00>
var buf4 = Buffer.from([1,2,3]);
console.log(buf4);//<Buffer 01 02 03>将数字初始化到了内存
var buf44 = Buffer.from('abcd');
console.log(buf44);//<Buffer 61 62 63 64>a的Unicode码是97,十六进制61<=>十进制97(在calc中使用程序员计算器计算)

4. Node.js官方提供的原生模块 —— fs 

   fs模块提供了对文件系统中的文件/目录进行增删改查、读写的功能。

   //同步读取文件中的内容

       var data =fs.readFileSync( file );

   //同步向文件中写出内容(删除已有内容)

       fs.writeFileSync(file,  str/buf )

   //同步向文件中追加写出内容(不删除已有内容)

       fs.appendFileSync(file,  str/buf )

   练习:使用上述方法,实现把 4.css 文件复制为 4.backup.css

   

var data = fs.readFileSync('./public/1.html');
var str = new Date().toString();
fs.appendFileSync('./public/3.log',str);
var data = fs.readFileSync('./public/4.css');
fs.writeFileSync('./public/4.backup.css',data);

 //异步读取文件中的内容                         

       fs.readFile( file,  function(err, data){ } );

   //异步向文件中写出内容(删除已有内容)

       fs.writeFile(file,  str/buf,  function(err){ } )

   练习:使用异步方法,实现把 4.css 文件复制为 44.backup.css

 

const fs = require('fs');
console.log('Starting read file...');

fs.readFile('./public/4.css',function(err,data){
    if(err){
        console.log('Faile to read file!');
        console.log(err);
    }else {
        console.log(data.toString());
        console.log('2file read finish');
        fs.writeFile('./public/44.backip.css',data,function(err){
            console.log('File write finish!');
        });
    }
});

   提示:文件读写可以使用同步或异步,但推荐使用异步方法——最大限度的发挥Node.js的优势。

 

7.Node.js官方提供的原生模块—— http 

  HTTP模块可用于编写基于HTTP协议的客户端程序(即浏览器);也可以编写基于HTTP协议的服务器端程序(即Web服务器)

  用http模块编写一个Web服务器:

  (1)接收客户端的HTTP请求消息

  (2)解析客户端请求消息

  (3)读取客户端请求的文件

  (4)向客户端发送HTTP响应消息,主体就是客户端请求的文件

       var server =http.createServer( );

       server.listen(80);

       server.on('request', function(req,res){

              //解析请求消息

              //向客户端写出响应消息

       })


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值