一、Node.js中常用的内置模块
-
fs模块
该模块提供对文件系统的访问功能,可以读写文件、创建和删除目录等。var fs = require("fs"); // 异步读取 fs.readFile('input.txt', function (err, data) { if (err) { return console.error(err); } console.log("异步读取: " + data.toString()); }); // 同步读取 var data = fs.readFileSync('input.txt'); console.log("同步读取: " + data.toString()); console.log("程序执行完毕。");
- util
是一个Node.js 核心模块,提供常用函数的集合,用于弥补核心 JavaScript 的功能 过于精简的不足。util.callbackify
util.callbackify(original) 将
async
异步函数(或者一个返回值为Promise
的函数)转换成遵循异常优先的回调风格的函数,例如将(err, value) => ...
回调作为最后一个参数。 在回调函数中,第一个参数为拒绝的原因(如果Promise
解决,则为null
),第二个参数则是解决的值。
util.inherits
util.inherits(constructor, superConstructor) 是一个实现对象间原型继承的函数。
JavaScript 的面向对象特性是基于原型的,与常见的基于类的不同。JavaScript 没有提供对象继承的语言级别特性,而是通过原型复制来实现的。
util.isArray(object)
如果给定的参数 "object" 是一个数组返回 true,否则返回 false。
util.isRegExp(object)
如果给定的参数 "object" 是一个正则表达式返回true,否则返回false。
util.isDate(object)
如果给定的参数 "object" 是一个日期返回true,否则返回false。
更多详情可以访问 http://nodejs.org/api/util.html 了解详细内容。 - http模块:该模块提供对HTTP协议的支持,可以创建HTTP服务器和客户端,实现HTTP请求和响应。
代码如下:var http = require('http'); var fs = require('fs'); var url = require('url'); // 创建服务器 http.createServer( function (request, response) { // 解析请求,包括文件名 var pathname = url.parse(request.url).pathname; // 输出请求的文件名 console.log("Request for " + pathname + " received."); // 从文件系统中读取请求的文件内容 fs.readFile(pathname.substr(1), function (err, data) { if (err) { console.log(err); // HTTP 状态码: 404 : NOT FOUND // Content Type: text/html response.writeHead(404, {'Content-Type': 'text/html'}); }else{ // HTTP 状态码: 200 : OK // Content Type: text/html response.writeHead(200, {'Content-Type': 'text/html'}); // 响应文件内容 response.write(data.toString()); } // 发送响应数据 response.end(); }); }).listen(8080); // 控制台会输出以下信息 console.log('Server running at http://127.0.0.1:8080/');
- url模块:该模块提供URL解析功能,可以将一个URL字符串解析成各个部分,例如:协议、主机名、路径等。我们要为路由提供请求的 URL 和其他需要的 GET 及 POST 参数,随后路由需要根据这些数据来执行相应的代码。
var http = require("http"); var url = require("url"); function start() { function onRequest(request, response) { var pathname = url.parse(request.url).pathname; console.log("Request for " + pathname + " received."); response.writeHead(200, {"Content-Type": "text/plain"}); response.write("Hello World"); response.end(); } http.createServer(onRequest).listen(8888); console.log("Server has started."); } exports.start = start;
- path模块:该模块提供操作文件路径的方法,例如获取路径中的文件名、扩展名等等。
- events模块:events 模块只提供了一个对象: events.EventEmitter。EventEmitter 的核心就是事件触发与事件监听器功能的封装。
- net模块:该模块提供网络通信功能,可以实现Socket编程,例如创建TCP服务器和客户端。
- crypto模块:该模块提供加密和解密相关的功能,例如:计算哈希值、生成随机数、加密解密等。
- OS 模块:提供基本的系统操作函数。
- stream模块
- child_process模块
- Net 模块:用于底层的网络通信。提供了服务端和客户端的的操作。
- DNS 模块:用于解析域名。
- Domain 模块
简化异步代码的异常处理,可以捕捉处理try catch无法捕捉的。
等等,可以根据具体需求进行调用和使用。
二、Node.js常用的第三方模块
1. Express(Web 应用框架)
Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具。
使用 Express 可以快速地搭建一个完整功能的网站。
Express 框架核心特性:
-
可以设置中间件来响应 HTTP 请求。
-
定义了路由表用于执行不同的 HTTP 请求动作。
-
可以通过向模板传递参数来动态渲染 HTML 页面。
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Hello, Express!');
});
app.listen(3000, () => {
console.log('Express app listening on port 3000');
});
2. axios(HTTP 请求)
axios 是一个功能强大的 HTTP 请求库,用于在 Node.js 和浏览器中发送 HTTP 请求。
const axios = require('axios');
axios.get('https://api.example.com/data')
.then((response) => {
console.log(response.data);
})
.catch((error) => {
console.error(error);
});
3. lodash(实用工具库)
lodash 是一个实用工具库,提供了许多便捷的函数,用于简化 JavaScript 编程。
const _ = require('lodash');
const numbers = [1, 2, 3, 4, 5];
const sum = _.sum(numbers);
console.log(sum); // Output: 15
4. moment(日期时间处理)
moment 是一个用于解析、格式化和操作日期时间的库,让日期时间处理更加简单。
const moment = require('moment');
const now = moment();
console.log(now.format('YYYY-MM-DD')); // Output: "2023-07-26"
5.Socket.IO (双向通信)
是一个建立在 WebSocket 协议之上的库,可以在客户端和服务器之间实现低延迟、双向和基于事件的通信。
6.MySQL(数据库)
如何使用 Node.js 来连接 MySQL,并对数据库进行操作。
$ cnpm install mysql
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : '123456',
database : 'test'
});
connection.connect();
connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
if (error) throw error;
console.log('The solution is: ', results[0].solution);
});
7.MongoDB(数据库管理系统)
如何使用 Node.js 来连接 MongoDB,并对数据库进行操作。
$ cnpm install mongodb
要在 MongoDB 中创建一个数据库,首先我们需要创建一个 MongoClient 对象,然后配置好指定的 URL 和 端口号。
如果数据库不存在,MongoDB 将创建数据库并建立连接。
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/runoob";
MongoClient.connect(url, function(err, db) {
if (err) throw err;
console.log("数据库已创建!");
db.close();
});
等等,目前先介绍到这里,后续会继续补充。