day5:Node.js 第三方库
使用 Express.js 构建 Web 应用
Express框架是Node.js生态系统中的一种流行的Web应用程序框架。其核心功能主要包括以下几个方面:
- 路由:Express提供了一种方便的方式来定义路由,使得开发人员可以基于不同的HTTP方法(如GET、POST等)和URL来定义处理请求的函数。
- 中间件:这是Express框架的另一个核心特性,用于在请求到达路由处理函数之前或之后执行一些操作。这些操作可以包括日志记录、身份验证、压缩响应等。
- 模板渲染:Express框架支持将动态数据与模板结合,生成并返回最终的HTML页面。这一特性使得开发人员可以更方便地构建和管理Web应用程序。
安装 Express
安装 Express 并将其保存到依赖列表中:
[root@node3 nodejs]# cnpm install express --save
以上命令会将 Express 框架安装在当前目录的 node_modules 目录中, node_modules 目录下会自动创建 express 目录。以下几个重要的模块是需要与 express 框架一起安装的:
- body-parser - node.js 中间件,用于处理 JSON, Raw, Text 和 URL 编码的数据。
- cookie-parser - 这就是一个解析Cookie的工具。通过req.cookies可以取到传过来的cookie,并把它们转成对象。
- multer - node.js 中间件,用于处理 enctype=“multipart/form-data”(设置表单的MIME编码)的表单数据。
[root@node3 nodejs]# cnpm install body-parser --save
[root@node3 nodejs]# cnpm install cookie-parser --save
[root@node3 nodejs]# cnpm install multer --save
安装完后,我们可以查看下 express 使用的版本号:
[root@node3 nodejs]# cnpm list express
helloworld@1.0.0 /root/nodejs
└── express@4.18.2 -> ./node_modules/.store/express@4.18.2/node_modules/express
[root@node3 nodejs]# cnpm list
helloworld@1.0.0 /root/nodejs
├── accepts@1.3.8 extraneous
├── array-flatten@1.1.1 extraneous
├── body-parser@1.20.2 -> ./node_modules/.store/body-parser@1.20.2/node_modules/body-parser
├── bytes@3.1.2 extraneous
├── call-bind@1.0.2 extraneous
├── content-disposition@0.5.4 extraneous
├── content-type@1.0.5 extraneous
├── cookie-parser@1.4.6 -> ./node_modules/.store/cookie-parser@1.4.6/node_modules/cookie-parser
├── cookie-signature@1.0.6 extraneous
├── cookie@0.5.0 extraneous
├── debug@2.6.9 extraneous
├── depd@2.0.0 extraneous
├── destroy@1.2.0 extraneous
├── ee-first@1.1.1 extraneous
├── encodeurl@1.0.2 extraneous
├── escape-html@1.0.3 extraneous
├── etag@1.8.1 extraneous
├── express@4.18.2 -> ./node_modules/.store/express@4.18.2/node_modules/express
├── finalhandler@1.2.0 extraneous
├── forwarded@0.2.0 extraneous
├── fresh@0.5.2 extraneous
├── function-bind@1.1.1 extraneous
├── get-intrinsic@1.2.1 extraneous
├── has-proto@1.0.1 extraneous
├── has-symbols@1.0.3 extraneous
├── has@1.0.4 extraneous
├── http-errors@2.0.0 extraneous
├── iconv-lite@0.4.24 extraneous
├── ipaddr.js@1.9.1 extraneous
├── media-typer@0.3.0 extraneous
├── merge-descriptors@1.0.1 extraneous
├── methods@1.1.2 extraneous
├── mime-db@1.52.0 extraneous
├── mime-types@2.1.35 extraneous
├── mime@1.6.0 extraneous
├── ms@2.0.0 extraneous
├── multer@1.4.5-lts.1 -> ./node_modules/.store/multer@1.4.5-lts.1/node_modules/multer
├── mysql@2.18.1
├── negotiator@0.6.3 extraneous
├── object-inspect@1.12.3 extraneous
├── on-finished@2.4.1 extraneous
├── parseurl@1.3.3 extraneous
├── path-to-regexp@0.1.7 extraneous
├── proxy-addr@2.0.7 extraneous
├── qs@6.11.0 extraneous
├── range-parser@1.2.1 extraneous
├── raw-body@2.5.1 extraneous
├── safe-buffer@5.2.1 extraneous
├── safer-buffer@2.1.2 extraneous
├── send@0.18.0 extraneous
├── serve-static@1.15.0 extraneous
├── setprototypeof@1.2.0 extraneous
├── side-channel@1.0.4 extraneous
├── statuses@2.0.1 extraneous
├── toidentifier@1.0.1 extraneous
├── type-is@1.6.18 extraneous
├── unpipe@1.0.0 extraneous
├── utils-merge@1.0.1 extraneous
└── vary@1.1.2 extraneous
第一个 Express 框架实例
创建 express_demo.js 文件,代码如下所示:
const express = require('express');
const app = express();
app.use(express.json()); // 支持JSON格式的请求体
// 定义一个用户路由
app.get('/users', (req, res) => {
// 处理获取用户列表的请求
const users = [
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' },
{ id: 3, name: 'Charlie' },
];
res.json(users);
});
app.get('/users/:id', (req, res) => {
// 处理获取特定用户信息的请求
const userId = req.params.id;
const user = { id: userId, name: `User ${userId}` };
res.json(user);
});
app.post('/users', (req, res) => {
// 处理创建新用户的请求
const newUser = req.body;
// 在这里执行保存用户到数据库等操作
res.status(201).json({ message: 'User created successfully.' });
});
// 启动应用程序监听端口
app.listen(3000, () => {
console.log('API接口已启动,监听端口3000...');
});
执行以上代码:
$ node express_demo.js
应用实例,访问地址为 API接口已启动,监听端口3000...
在浏览器中访问 http://127.0.0.1:3000,结果如下图所示:
第二个 Express 框架实例
创建 logger.js 文件,代码如下所示:
const express = require('express');
const app = express();
// 定义一个简单的中间件
const loggerMiddleware = (req, res, next) => {
console.log(`Request URL: ${req.url}`);
next(); // 调用next函数以继续处理链
};
// 将中间件应用到应用程序中
app.use(loggerMiddleware);
// 定义一个路由
app.get('/', (req, res) => {
res.send('Hello, World!');
});
// 启动应用程序监听端口
app.listen(3001, () => {
console.log('应用程序已启动,监听端口3001...');
});
在上面的示例中,我们定义了一个简单的中间件loggerMiddleware
,它在每个请求被处理之前记录请求的URL。通过app.use()
方法,我们将中间件应用到应用程序中。当一个请求到达应用程序时,它会首先通过中间件,然后再到达路由处理函数。
请注意,中间件函数通常接受三个参数:req
(请求对象),res
(响应对象)和next
(下一个中间件函数)。中间件可以通过调用next()
函数将控制权传递给下一个中间件或路由处理函数。
执行以上代码:
[root@node3 nodejs]# pm2 start logger.js --watch
[PM2] Starting /root/nodejs/logger.js in fork_mode (1 instance)
[PM2] Done.
在浏览器中访问 http://127.0.0.1:3001,结果如下图所示:
6|logger | 应用程序已启动,监听端口3000...
6|logger | Request URL: /
6|logger | Request URL: /favicon.ico
Node.js 连接 MySQL
要在Node.js中连接MySQL数据库,你可以使用mysql
模块。首先,确保你已经安装了Node.js和MySQL服务器,并且数据库已经设置好并正在运行。你可以通过以下步骤在Node.js中连接MySQL数据库:
- 安装
mysql
模块:在命令行中运行以下命令来安装mysql
模块:
npm install mysql
- 在Node.js代码中导入
mysql
模块:在你的Node.js代码中,导入mysql
模块并创建一个数据库连接。
const mysql = require('mysql');
// 创建数据库连接
const connection = mysql.createConnection({
host: 'localhost', // MySQL服务器地址
user: 'your_username', // MySQL用户名
password: 'your_password', // MySQL密码
database: 'your_database' // 要连接的数据库名称
});
// 连接数据库
connection.connect((err) => {
if (err) {
console.error('连接数据库失败:', err);
return;
}
console.log('成功连接到数据库');
});
- 关闭数据库连接:在你的代码完成与数据库的交互后,记得关闭数据库连接以释放资源。
// 关闭数据库连接
connection.end();
-
数据库操作
website.sql文章来源:https://www.toymoban.com/news/detail-722628.html
SET NAMES utf8; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for `websites` -- ---------------------------- DROP TABLE IF EXISTS `websites`; CREATE TABLE `websites` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` char(20) NOT NULL DEFAULT '' COMMENT '站点名称', `url` varchar(255) NOT NULL DEFAULT '', `alexa` int(11) NOT NULL DEFAULT '0' COMMENT 'Alexa 排名', `country` char(10) NOT NULL DEFAULT '' COMMENT '国家', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of `websites` -- ---------------------------- BEGIN; INSERT INTO `websites` VALUES ('1', 'Google', 'https://www.google.cm/', '1', 'USA'), ('2', '淘宝', 'https://www.taobao.com/', '13', 'CN'), ('3', '菜鸟教程', 'http://www.runoob.com/', '4689', 'CN'), ('4', '微博', 'http://weibo.com/', '20', 'CN'), ('5', 'Facebook', 'https://www.facebook.com/', '3', 'USA'); COMMIT; SET FOREIGN_KEY_CHECKS = 1;
查询数据
var mysql = require('mysql'); var connection = mysql.createConnection({ host : 'localhost', user : 'root', password : '123456', port: '3306', database: 'test' }); connection.connect(); var sql = 'SELECT * FROM websites'; //查 connection.query(sql,function (err, result) { if(err){ console.log('[SELECT ERROR] - ',err.message); return; } console.log('--------------------------SELECT----------------------------'); console.log(result); console.log('------------------------------------------------------------\n\n'); }); connection.end();
插入数据
var mysql = require('mysql'); var connection = mysql.createConnection({ host : 'localhost', user : 'root', password : '123456', port: '3306', database: 'test' }); connection.connect(); var addSql = 'INSERT INTO websites(Id,name,url,alexa,country) VALUES(0,?,?,?,?)'; var addSqlParams = ['菜鸟工具', 'https://c.runoob.com','23453', 'CN']; //增 connection.query(addSql,addSqlParams,function (err, result) { if(err){ console.log('[INSERT ERROR] - ',err.message); return; } console.log('--------------------------INSERT----------------------------'); //console.log('INSERT ID:',result.insertId); console.log('INSERT ID:',result); console.log('-----------------------------------------------------------------\n\n'); }); connection.end();
更新数据
var mysql = require('mysql'); var connection = mysql.createConnection({ host : 'localhost', user : 'root', password : '123456', port: '3306', database: 'test' }); connection.connect(); var modSql = 'UPDATE websites SET name = ?,url = ? WHERE Id = ?'; var modSqlParams = ['菜鸟移动站', 'https://m.runoob.com',6]; //改 connection.query(modSql,modSqlParams,function (err, result) { if(err){ console.log('[UPDATE ERROR] - ',err.message); return; } console.log('--------------------------UPDATE----------------------------'); console.log('UPDATE affectedRows',result.affectedRows); console.log('-----------------------------------------------------------------\n\n'); }); connection.end();
删除数据
var mysql = require('mysql'); var connection = mysql.createConnection({ host : 'localhost', user : 'root', password : '123456', port: '3306', database: 'test' }); connection.connect(); var delSql = 'DELETE FROM websites where id=6'; //删 connection.query(delSql,function (err, result) { if(err){ console.log('[DELETE ERROR] - ',err.message); return; } console.log('--------------------------DELETE----------------------------'); console.log('DELETE affectedRows',result.affectedRows); console.log('-----------------------------------------------------------------\n\n'); }); connection.end();
文章来源地址https://www.toymoban.com/news/detail-722628.html
到了这里,关于day5:Node.js 第三方库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!