Node.js系统模块

什么是Node.js系统模块?

Node运行环境提供的API,因为这些API的都是以模块化的方式进行开发的,所有我们又称Node运行环境提供的API为系统模块( 针对文件、操作系统的API等 )。

操作文件的系统模块

fs(f表示文件,s表示系统)是操作文件的对象

通过readFile读取文件的内容

 /**
 * 引入操作文件的模块
 */
const fs = require('fs'); 

/*
通过readFile读取文件的内容
参数一:要读取的文件绝对路径
参数二:要读取的文件编码格式
参数三:读取的回调函数,error这个对象包含读取的错误信息,dos为读取的文件内容
 */
fs.readFile('./a.js','utf-8',(error,dos) => {
    // 如果在读取的过程中没有发生错误,那么打印读取的信息
    if (error == null){
        console.log(dos);
    }else {
        console.log(error);
    }
});

效果图:

通过readFile读取文件的内容

通过writeFile()写入文件内容

/**
 * 引入操作文件的模块
 */
const fs = require('fs');


/*
通过writeFile 将内容写入进文件
参数一:要写入内容的文件路径
参数二:要写入的内容
参数三:写入的回调,error这个对象包含写入时的错误信息
注意:如果在写入内容之前,文件中已有内容,那么会将之前的内容全部覆盖
 */
fs.writeFile('./a.js','你好',(error) => {
    if (error == null){
        console.log('写入成功');
    } else {
        console.log('写入失败');
    }

});

效果图:

通过writeFile 将内容写入进文件

操作path的系统模块

主要是针对硬盘的路径进行操作

通过join()路径拼接

/**
 * 引入操作路径的path对象
 */
const path = require('path');


/*
通过join()进行路径拼接
该函数的的参数为可变参数,也就是可以传入任一个参数作为路径进行拼接
参数一:要拼接的路径1
参数二:要拼接的路径2
 */
let newPath = path.join('workspace','demo');
console.log('newPath:'+newPath);
//newPath:workspace\demo

通过__dirname内置变量可以获取当前文件的绝对路径,如下案例

//a.js
// 通过__dirname内置变量可以获取当前文件所在的绝对路径
console.log(__dirname);
//D:\WebstormProjects\WebDemo\js

通过join()和__dirname,readFile()读取指定文件

/**
 * 引入操作文件的模块
 */
const fs = require('fs');
const path = require('path');

/*
拼接要读取的文件路径
 */
const filePath = path.join(__dirname,'b.js');
console.log("filePath:"+filePath);
//filePath:D:\WebstormProjects\WebDemo\js\b.js
// 读取文件
fs.readFile(filePath,'utf-8',(error,dos) => {
    if (error == null){
        console.log(dos);
    }
});

操作web服务器的系统模块

http:http是创建web服务器所需的模块

通过http模块创建一个web服务器,代码如下:

/*
引入创建web服务器所需的系统模块http对象
 */
const http = require('http');
// 通过createServer()创建一个服务
const appServer = http.createServer();
/*
监听网络请求(当客户端发送请求时,该监听事件就会响应)
参数一:request 表示事件名称
参数二:事件处理函数,其中request 表示请求对象,response 表示响应对象
 */
appServer.on('request',(request,response) =>{

    request.headers //获取请求头信息,返回请求头对象
    request.url //获取请求地址,返回请求地址字符串
    request.method //获取请求方式,返回请求方式字符串
 

    // 根据客户端不同的路径,响应不同的数据
    if (request.url === '/login'||request.url === '/'){
        response.end('welcome to loginpage');
    } else if (request.url === '/index'){
        response.end('welcome to homepage');
    } else {
        response.end('not found');
    }
});

// 监听8090端口(该服务的端口为8090)
appServer.listen(8090);
console.log('web服务以启动,可以通过localhost:8090进行访问');

然后通过 nodemon 命令去执行即可

操作url地址的系统模块

url:url模块主要用于处理url地址的

通过url对象中的parse()解析url的示例代码如下:

/*
引入创建web服务器所需的系统模块http对象
 */
const http = require('http');

/*
引入处理url地址的url模块
 */
const url = require('url');

// 通过createServer()创建一个服务
const appServer = http.createServer();
/*
监听网络请求(当客户端发送请求时,该监听事件就会响应)
参数一:request 表示事件名称
参数二:事件处理函数,其中request 表示请求对象,response 表示响应对象
 */
appServer.on('request',(request,response) =>{

    // 解析url地址,返回一个解析后的对象
    let urlObj = url.parse(request.url);
    console.log('================ 解析后的url对象 start ================');
    console.log(urlObj);
    console.log('================ 解析后的url对象 end ================');
});

// 监听8090端口(该服务的端口为8090)
appServer.listen(8090);
console.log('web服务以启动,可以通过localhost:8090进行访问');

输入的地址为: http://localhost:8090/index?username=admin&password=123456 ,通过url对象中parse()解析后的数据如下

Url {
   protocol: null,
   slashes: null,
   auth: null,
   host: null,
   port: null,
   hostname: null,
   hash: null,
   search: '?username=admin&password=123456',
   query: [Object: null prototype] { username: 'admin', password: '123456' },
   pathname: '/index',
   path: '/index?username=admin&password=123456',
   href: '/index?username=admin&password=123456'
 }
如果觉得文章有帮助到你,可以扫描以下二维码
   请本文作者 喝一杯
pay_weixin pay_weixin

发表评论

电子邮件地址不会被公开。 必填项已用*标注