Nodejs 的 Express 使用教程
在本教程中,我们将详细介绍如何使用 Nodejs 的 Express 框架来创建一个简单的 Web 应用程序。Express 是一个简洁、灵活的 Node.js Web 应用开发框架,它提供了一系列强大的特性,帮助您创建各种 Web 和移动设备应用。
组织结构
在创建 Express 项目时,我们需要了解项目的组织结构。一个典型的 Express 项目结构如下所示:
* `node_modules`:用于安装本地模块。
* `public`:用于存放用户可以下载到的文件,比如图片、脚本、样式表等。
* `routes`:用于存放路由文件。
* `views`:用于存放网页的模板。
* `app.js`:应用程序的启动脚本。
* `package.json`:项目的配置文件。
创建 Express 服务器
要创建一个 Express 服务器,我们需要在 `app.js` 文件中编写以下代码:
```
var express = require('express');
var app = express();
// 指定根目录显示的内容
app.get('/', function(req, res) {
res.send('Hello World');
});
// 指定监听端口
var server = app.listen(3000, function() {
console.log('Listening on port %d', server.address().port);
});
```
中间件
中间件(Middleware)是处理 HTTP 请求的函数。当一个 HTTP 请求进入服务器,服务器实例会调用第一个中间件,完成后根据设置,决定是否再调用下一个中间件。中间件的参数可以有四个,即错误处理、客户请求、服务器响应和下一个中间件。
例如:
```
function(error, request, response, next) {}
```
使用中间件
使用中间件的方法是使用 `use` 方法。例如:
```
app.use(function(request, response) {
response.writeHead(200, { "Content-Type": "text/plain" });
response.end("Hello world!\n");
});
```
错误内容显示
要显示错误内容,我们可以使用 `app.use` 方法来调用中间件。例如:
```
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(function(err, req, res, next) {
console.error(err.stack);
res.send(500, 'Something broke!');
});
```
路由
Express 提供了多种路由方式,以下是一些常用的路由方式:
* `app.use('/', middleware);`:对路径 `/` 的处理。
* `app.get("/", middleware);`:HTTP GET 时,对于路径 `/` 的处理。
* `app.post("/", middleware);`:HTTP POST 时,对于路径 `/` 的处理。
* `app.put("/", middleware);`:HTTP PUT 时,对于路径 `/` 的处理。
* `app.delete("/", middleware);`:HTTP DELETE 时,对于路径 `/` 的处理。
路径通配符
Express 提供了通配符来匹配路径。例如:
```
app.get("*", function(request, response) {
response.end("404!");
});
```
这将匹配所有路径并返回 404 。
捕获路径内容
我们可以使用通配符来捕获路径内容。例如:
```
app.get("/hello/:who", function(req, res) {
res.end("Hello, " + req.params.who + ".");
});
```
这将捕获路径 `/hello/alice` 中的 `alice` 并将其作为 `req.params.who` 属性的值。
设置环境变量
我们可以使用 `set` 方法来设置环境变量。例如:
```
app.set('views', './views');
```
这将设置视图文件夹的路径。
Express 提供了一个灵活和强大的框架来创建 Web 应用程序。通过使用中间件、路由和路径通配符,我们可以轻松地创建一个功能齐全的 Web 应用程序。