nodejs中的全局对象以及系统模块
2021-03-20 22:27
标签:介绍 null 接收 color write RoCE 出错 round abc 一。node中有一个全局变量global,是node中最大的一个对象,相当于浏览器中的window对象,global中的成员在使用时,可以省略global ,下面介绍几个全局对象global中的成员: console打印 process,和进程相关的对象 setInterval,同理,也是node中的,不是浏览器中的 require(),它是全局对象global中的一个方法,用于在js文件中引入另外的文件 __dirname,当前执行文件的绝对路径(在js文件中使用) __filename,当前执行文件的绝对路径,包含文件名(在js文件中使用) 二,系统模块 >path模块:处理路径的模块 // extname -- 获取文件后缀 // join -- 智能拼接路径 >fs模块:文件操作模块 // 功能:判断文件或路径是否存在 // readFile -- 异步读取文件 fs.readFile(‘./test.json‘, ‘utf-8‘, (err, data) => { // writeFile -- 异步写入文件 >url模块:一个完整的url 协议://主机地址:[端口]/文件地址?参数 >http模块:http服务器处理模块,可以使用http模块搭建服务器 // req:request,请求;它是一个对象;它包含了所有和请求相关的信息 //根据不同 url 地址处理不同请求 // 判断浏览器请求的文件是否存在,如果存在,则读取文件响应结果;如果不存在,则告知404 //处理浏览器POST方式提交的数据 //POST请求一般会提交数据给服务器,服务器在接收数据的时候也是分块接收的 // 当有数据提交给服务器之后。 //写接口的方式 // 写一个 /getMsg 接口,用于获取留言数据 博客参考:https://blog.csdn.net/Andrexc/article/details/89405822 nodejs中的全局对象以及系统模块 标签:介绍 null 接收 color write RoCE 出错 round abc 原文地址:https://www.cnblogs.com/star-meteor/p/12729244.html
//使用前首先要加载
let path = require(‘path‘);
//调用path模块中的方法,来处理相应的问题,下面列举path模块中的几个方法
console.log(path.extname(‘index.html‘)); // .html
console.log(path.join(‘/a‘, ‘b‘, ‘c‘)); // \a\b\c//使用前引入模块
const fs = require(‘fs‘);
调用fs模块的方法
// fs.access(需要判断的路径, 检测路径是否存在的一个回调函数);
fs.access(‘ 路径‘, (err) => {
// err 为 null,表示没有错误;意思是表示判断的文件 存在
// err 为 错误对象,意思判断的文件 不存在
if (err) {
console.log(‘文件不存在‘);
} else {
console.log(‘文件存在‘);
}
});
if (err) {
console.log(‘读取文件出错‘);
} else {
console.log(data); // 读取到的原始数据
}
});
fs.writeFile(‘./abc.html‘, ‘hello world‘, (err) => {
if (err) {
console.log(‘写入文件失败‘);
} else {
console.log(‘文件写入成功‘);
}
});>querystring模块:查询字符串(id=1&name=zs&age=20)处理模块
//加载模块
const querystring = require(‘querystring‘);
//调用querystring模块中的方法
// parse -- 将查询字符串解析成JS对象
console.log(querystring.parse(‘id=1&name=zs&age=20‘));
// { id: ‘1‘, name: ‘zs‘, age: ‘20‘ }
// stringify -- 将JS对象转成查询字符串
console.log(querystring.stringify({ id: ‘1‘, name: ‘zs‘, age: ‘20‘ }));
// id=1&name=zs&age=20
//加载模块
const url = require(‘url‘);
// 直接提供一个完整的url
let myURL = new URL(‘http://www.xxx.com/test.html?id=11&age=22‘);
// 或
// 提供两个参数,一是文件路径及参数部分,二是域名,总之,二者组合必须是完整的url
let myURL = new URL(‘/test.html?id=11&age=22‘, ‘http://www.xxx.com‘);
// 得到的myURL是一个对象,包含url中的各个部分
// 如果需要解析参数部分,则使用querystring模块,或使用URL的一个子对象searchParams中的get方法
let age = myURL.searchParams.get(‘age‘); // 22
// 1. 加载http模块
const http = require(‘http‘);
// 2. 创建服务对象,一般命名为server
const server = http.createServer(); // create创建、server服务器
// 3. 设置端口,开启服务
server.listen(3000, () => {
console.log(‘服务器启动了‘);
});
// 4. 给server对象注册请求(request)事件,监听浏览器的请求。只要有浏览器的请求,就会触发该事件
server.on(‘request‘, (req, res) => {
/ / res:response,响应;它是一个对象;它包含了所有和响应相关的信息
* res.end(‘响应的内容‘); --- 它可以设置响应体,并做出响应
* res.setHeader(); --- 设置响应头
* res.write(‘响应体‘); -- 设置响应体,但不会做出响应
* res.writeHead() -- 设置响应头,设置响应状态码
* res.statusCode = 404; ---- 设置响应状态码
// res.statusCode = 404
fs.access(‘.‘ + req.url, (err) => {
if (err) {
// 说明文件不存在
res.writeHead(404, {
‘Content-Type‘: ‘text/html; charset=utf-8‘
});
res.end(‘小朋友,你走错了‘);
} else {
// 说明文件存在
fs.readFile(‘.‘ + req.url, (err, data) => {
if (err) throw err;
res.end(data);
});
}
});
// 服务器接收提交过来的数据;并且保存(json文件中,或者数据库中)
/**
* 1. 创建一个空字符串,用于保存提交过来的数据
* 2. 给req注册data事件,只要有数据提交过来,就会触发;用于接收提交过来的数据;数据比较大的话,是分块接收的
* 3. 给req注册end事件,当完全接收了提交过来的数据,就会触发
*/
let str = ‘‘; // 定义一个用于保存数据的空字符串
req.on(‘data‘, (chunk) => {
// chunk -- 块
str += chunk;
});
req.on(‘end‘, () => {
console.log(str); // id=1&name=zs&age=43
});
});
if (req.url === ‘/getMsg‘ && req.method === ‘GET‘) {
// 读取数据,并将读取的结果响应给浏览器
let result = require(‘./db.json‘);
res.setHeader(‘Content-Type‘, ‘application/json; charset=utf-8‘);
res.end(JSON.stringify(result));
}});