Node.js Express实战:安装、路由与中间件解析
131 浏览量
更新于2024-09-02
收藏 83KB PDF 举报
"本文将深入探讨Node.js的Express框架,包括其安装、基本使用、路由配置、中间件机制以及模板引擎的应用。通过实例演示,帮助读者理解和掌握这些关键概念,适用于初学者和有一定经验的开发者参考。"
在Node.js开发Web应用时,Express是一个非常流行的框架,它提供了简洁的API来构建高效且可扩展的网络应用。让我们逐个解析Express的核心功能。
### 安装
安装Express非常简单,只需在项目目录中运行以下命令:
```bash
npm install --save express
```
这将会把Express安装为项目的依赖,并将其记录在`package.json`文件中。
### 基本使用
基础的Express应用初始化如下:
```javascript
var express = require('express');
var app = express();
app.get('/', function(req, res) {
res.send('index');
});
app.get('/new/:id', function(req, res) {
res.send('news' + req.params.id);
});
app.listen(3000);
```
这里创建了一个监听3000端口的服务器,并定义了两个路由:根路径`/`返回"index",以及一个动态路由`/new/:id`,其中`:id`是参数,可以通过`req.params.id`访问。
### 路由
Express的路由系统允许我们处理各种HTTP方法,如GET、POST、PUT等。例如:
```javascript
app.get('/', function(req, res) {
res.send('get请求');
});
app.post('/', function(req, res) {
res.send('post请求');
});
```
同时,`app.all`可以捕获所有HTTP方法:
```javascript
app.all('/', function(req, res) {
res.send('get&post');
});
```
动态路由可以包含占位符,如`/student/:id`,其中`:id`可以用`req.params.id`获取。
### 正则匹配
Express还支持正则表达式匹配路由:
```javascript
app.get('/ab?cd', function(req, res) {
res.send('ab?cd');
});
app.get('/ab+cd', function(req, res) {
res.send('ab+cd');
});
```
这里的`ab?cd`匹配`acd`或`abcd`,而`ab+cd`匹配`abcd`、`abbcd`等。
### 中间件
中间件是Express的一大特色,它按照定义的顺序依次执行。每个中间件可以处理请求、修改响应,甚至终止请求-响应周期。例如:
```javascript
app.use(function(req, res, next) {
console.log('Time:', Date.now());
next();
});
app.get('/', function(req, res) {
res.send('Hello World!');
});
```
上面的中间件会在每个请求开始时打印时间戳。
### 模板引擎
Express支持多种模板引擎,如Jade(现在称为Pug)、EJS、Handlebars等,用于生成动态HTML页面。以EJS为例,首先安装:
```bash
npm install --save ejs
```
然后设置视图引擎:
```javascript
app.set('view engine', 'ejs');
```
最后,可以使用`res.render()`方法渲染模板:
```javascript
app.get('/', function(req, res) {
res.render('index', { name: 'John' });
});
```
在这个例子中,`index.ejs`模板可以使用`<%= name %>`来插入变量`name`的值。
Express为Node.js提供了强大的工具,用于构建Web应用。通过学习和实践,你可以利用这些功能快速地构建出功能丰富的服务端应用。
2023-02-04 上传
2020-10-19 上传
2020-10-19 上传
2020-10-19 上传
2020-09-03 上传
2020-09-04 上传
2020-10-18 上传
2020-12-23 上传
点击了解资源详情
weixin_38681218
- 粉丝: 10
- 资源: 945
最新资源
- C语言数组操作:高度检查器编程实践
- 基于Swift开发的嘉定单车LBS iOS应用项目解析
- 钗头凤声乐表演的二度创作分析报告
- 分布式数据库特训营全套教程资料
- JavaScript开发者Robert Bindar的博客平台
- MATLAB投影寻踪代码教程及文件解压缩指南
- HTML5拖放实现的RPSLS游戏教程
- HT://Dig引擎接口,Ampoliros开源模块应用
- 全面探测服务器性能与PHP环境的iprober PHP探针v0.024
- 新版提醒应用v2:基于MongoDB的数据存储
- 《我的世界》东方大陆1.12.2材质包深度体验
- Hypercore Promisifier: JavaScript中的回调转换为Promise包装器
- 探索开源项目Artifice:Slyme脚本与技巧游戏
- Matlab机器人学习代码解析与笔记分享
- 查尔默斯大学计算物理作业HP2解析
- GitHub问题管理新工具:GIRA-crx插件介绍