nodejs中的全局对象以及系统模块

2021-03-20 22:27

阅读:489

标签:介绍   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模块:处理路径的模块

//使用前首先要加载
let path = require(‘path‘);
//调用path模块中的方法,来处理相应的问题,下面列举path模块中的几个方法
技术图片

// extname -- 获取文件后缀
console.log(path.extname(‘index.html‘)); // .html

// join -- 智能拼接路径
console.log(path.join(‘/a‘, ‘b‘, ‘c‘)); // \a\b\c

>fs模块:文件操作模块

//使用前引入模块 
const fs = require(‘fs‘);
调用fs模块的方法
技术图片

// 功能:判断文件或路径是否存在
// fs.access(需要判断的路径, 检测路径是否存在的一个回调函数);
fs.access(‘ 路径‘, (err) => {
// err 为 null,表示没有错误;意思是表示判断的文件 存在
// err 为 错误对象,意思判断的文件 不存在
if (err) {
console.log(‘文件不存在‘);
} else {
console.log(‘文件存在‘);
}
});

// readFile -- 异步读取文件

fs.readFile(‘./test.json‘, ‘utf-8‘, (err, data) => {
if (err) {
console.log(‘读取文件出错‘);
} else {
console.log(data); // 读取到的原始数据
}
});

// writeFile -- 异步写入文件
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

>url模块:一个完整的url 协议://主机地址:[端口]/文件地址?参数

//加载模块
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

>http模块:http服务器处理模块,可以使用http模块搭建服务器

// 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) => {

                // req:request,请求;它是一个对象;它包含了所有和请求相关的信息
                / / res:response,响应;它是一个对象;它包含了所有和响应相关的信息
 
               * res.end(‘响应的内容‘); --- 它可以设置响应体,并做出响应
               * res.setHeader(); --- 设置响应头
               * res.write(‘响应体‘); -- 设置响应体,但不会做出响应
              * res.writeHead() -- 设置响应头,设置响应状态码
               * res.statusCode = 404; ---- 设置响应状态码
              // res.statusCode = 404

 

//根据不同 url 地址处理不同请求

// 判断浏览器请求的文件是否存在,如果存在,则读取文件响应结果;如果不存在,则告知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);
});
}
});

//处理浏览器POST方式提交的数据

//POST请求一般会提交数据给服务器,服务器在接收数据的时候也是分块接收的

// 当有数据提交给服务器之后。
// 服务器接收提交过来的数据;并且保存(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
});
});

 

//写接口的方式

// 写一个 /getMsg 接口,用于获取留言数据
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));
}

 

           

});

博客参考:https://blog.csdn.net/Andrexc/article/details/89405822

nodejs中的全局对象以及系统模块

标签:介绍   null   接收   color   write   RoCE   出错   round   abc   

原文地址:https://www.cnblogs.com/star-meteor/p/12729244.html


评论


亲,登录后才可以留言!