Node核心模块

本文介绍了Node.js中的核心模块,包括fs用于文件操作,Buffer处理二进制数据,http模块实现HTTP请求,以及stream流用于数据交互。fs模块提供了异步和同步读取文件的方法,Buffer类创建和操作二进制数据。http模块展示了如何创建服务器并处理GET/POST请求。stream流则在处理文件和其他数据流时发挥关键作用。建议在实际开发中优先使用异步方法以避免阻塞进程。
摘要由CSDN通过智能技术生成

node.js核心模块

  • fs
  • Buffer
  • http
  • stream 流:用于和文件或其他的数据流交互

fs:文件系统模块

通过const fs = require('fs')加载fs模块
fs模块中的方法有同步和异步。读取文件内容的函数有异步的 fs.readFile() 和同步的 fs.readFileSync()。异步的方法函数最后一个参数为回调函数,回调函数的第一个参数包含了错误信息(error)。

// 同步加载
const data = fs.readFileSync('./笔记.md') 
console.log(data);
console.log('其他操作');
// 异步加载
const data = fs.readFile('./笔记.md',function(err,data){
    if (err) {
        return console.log(err)
    }
    console.log(data.toString()) // 设置编码方式 默认utf-8
}) 
console.log('其他操作');  

查看最后输出结果即能比较出异同。异步不会卡死后面的进程、后续代码会继续进行,建议大家使用异步方法

buffer:缓冲区

处理像TCP流或文件流时,必须使用到二进制数据。因此在 Node.js中,定义了一个 Buffer 类,该类用来创建一个专门存放二进制数据的缓存区。

// 创建一个buffer
const buf1 = Buffer.alloc(10,12); // 第二个数字是16进制
console.log(buf1);

// 创建一个buffer包括[1,2,3]
const buf2 = Buffer.from([1,2,3])
console.log(buf2);
const buf3 = Buffer.from('buffer创建方法')
console.log(buf3);

// Buffer字符编码

const buf4 = Buffer.from('hello world','ascii');
console.log(buf4.toString('base64'));  // 编码方式

http:GET/POST请求

首先要引入http模板const http = require('http')
第二步是创建一个server,第三步监听端口、之后去访问端口就行了

const server = http.createServer(
    function (request, response) { // 第一个参请求对象、第二个参数是相应对象
        const url = request.url; // 获得请求对象 的url
        const method = request.method; // 获得请求对象的methods; 请求方式
        //  响应一个get请求,返回的内容是html
        if (url === '/' && method === 'GET') {
            // 获取首页
            fs.readFile('./index.html', function (err, data) {
                if (err) {
                    return console.log(err);
                    // throw err;
                }
                response.setHeader('Content-Type', 'text/html') // 响应头
                // 给前台返回数据
                response.end(data)
            })
        } else if(url === '/users' && method === 'GET'){
            // 构造数据 、真实数据是从数据库查询
            const users = [
                {name:'tom',age:'20'},
                {name:'tim',age:'20'},
            ];
            // 设置响应头 json数据的格式 
            response.setHeader('Content-Type','application/json')
            // 给前台返回数据
            response.end(JSON.stringify(users))
            // 如果返回json数据   
        }
})
server.listen(8080)

stream 流:用于和文件或其他的数据流交互

if(url === 'GET' && headers.accept.indexOf('image/*')){
            // 用户希望获得一张图片
            fs.createReadStream( '.' + url ).pipe(response); // pipe 管道操作 
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值