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 管道操作
}