Coursera 笔记

Module 01 · Introduction to Server-Side JavaScript服务器端 JavaScript 入门

Advanced Node.js ModulesNode.js 模块进阶

Coursera ↗

完成本阅读后,您将能够描述三种类型的 Node.js 模块。您还将能够解释几个重要核心模块的用途。

在 Node.js 中,库与模块是相同的概念。库包含可以在应用程序中重用的代码。模块有三种类型:核心模块、本地模块和第三方模块。

核心 Node.js 模块形成了一个最小的库。它们包含开发 Node.js 应用程序所需的最基本功能。

本地模块是下一种类型的 Node.js 模块。本地模块是您和开发团队在创建 Node.js 应用程序时编写的模块。

第三方模块可以在线获取,由后端 Node.js 社区创建。这些库可以根据其许可证进行使用。许多第三方模块要么属于公共领域,不需要许可证,要么是开源的。开源资源通常受“自由使用”许可证的管理,允许开发者使用和修改代码,但也要求开发者在相同许可证下分享他们的作品。

核心模块中最重要的有 http、path、fs、os、util、url 和 querystring。我们将简要讨论每个模块并提供代码示例。

http 模块提供了通过 HTTP 传输数据的方法。要在应用程序中包含 http 模块,您应该引入它。

以下是使用 http 模块创建服务器实例的示例代码。此代码使用 http.createServer() 方法创建服务器实例。

let http = require('http');
http.createServer(function (req, res) {
    res.write('hello from server');//向客户端写入响应
    res.end();//服务器响应结束
}).listen(6000);//服务器实例在 6000 端口监听 http 请求

fs 模块用于与文件系统交互。它不需要安装,因为它是 Node.js 核心的一部分,可以直接引入。以下代码示例使用 fs 模块同步读取本地文件,并将文件内容打印到控制台。

const fs = require('fs');
// 异步读取文件 'sample.txt'
fs.readFile('sample.txt', 'utf8', (err, data) => {
    if (err) {
        console.error(err);
        return;
    }
    // 将 'sample.txt' 的内容打印到控制台
    console.log(data);
});

fs 模块还可以用于输入和输出,称为 I/O。fs 模块的方法可以用于从外部文件检索信息或写入数据。

const fs = require('fs');
// 同步读取文件 '/content.md' 的内容并存储在 'data' 中
const data = fs.readFileSync('/content.md', 'utf8');
// 将 'content.md' 的内容打印到控制台
console.log(data);

OS 模块提供了从应用程序运行的操作系统中检索信息并与之交互的方法。这是来自 OS 模块的示例代码,获取计算机的平台和架构。

let os = require('os');
console.log("计算机操作系统平台信息 : " + os.platform());
console.log("计算机操作系统架构信息: " + os.arch());

path 模块允许您检索和操作目录和文件路径。
以下代码检索给定文件路径的最后一部分,并将该值打印到控制台:

const path = require('path');
let result = path.basename('/content/index/home.html');
console.log(result); //输出 home.html 到控制台

Node.js util 模块旨在用于内部任务,例如调试和弃用函数。假设您想调试一个程序,以计算循环中的迭代次数。您可以使用 util.format() 方法,如下所示:

let util = require('util');
let str = '循环已执行 %d 次。';
for (let i = 1; i <= 10; i++) {
    console.log(util.format(str, i)); //输出 '循环已执行 i 次'
}

URL 模块用于将网址分解为可读的部分。以下是一个示例代码,从给定 URL 返回“firstName”查询对象的值。

const url = require('url');
let webAddress = 'http://localhost:2000/index.html?lastName=Kent&firstName=Clark';
let qry = url.parse(webAddress, true);
let qrydata = qry.query; //返回一个对象: {lastName: 'Kent', firstName: 'Clark'}
console.log(qrydata.firstName); //输出 Clark

querystring 模块提供了用于解析 URL 查询字符串的方法。
例如,

let qry = require('querystring');
let qryParams = qry.parse('lastName=Kent&firstName=Clark');
console.log(qryParams.firstName); //返回 Clark

还有许多有用的第三方包可用于 Node.js。其中一些包括 AsyncJS、Axios 和 Express。这些库将在课程后续部分讨论。