在本篇《Node.js入门教程六:Express模块用法示例》中,我们将深入探讨Express——一个基于Node.js平台的极简、灵活的web应用开发框架。Express使得构建web应用变得简单,它提供了丰富的功能,如中间件系统、路由处理以及模板引擎等。
我们需要了解的是`require()`函数,它是Node.js中的核心模块,用于加载和使用外部模块。在示例中,我们看到`var express = require('express')`和`var morgan = require('morgan')`,分别导入了Express框架和morgan中间件。morgan中间件用于记录HTTP请求日志,这对于调试和监控应用行为非常有用。
接下来,我们创建了Express应用实例`var app = express()`。在Express中,应用实例是一个处理HTTP请求的核心对象。我们可以使用`app.use()`方法添加中间件,如`app.use(morgan())`,这样每次请求到达时,都会先执行这个中间件函数。
Express提供了一个内置的中间件`express.static()`,用于设置静态文件目录。比如`app.use(express.static('./public'))`,这会让Express从`./public`目录下提供静态资源,如HTML、CSS和JavaScript文件。当用户访问如`localhost:3001/test.txt`时,Express会查找`public`目录下的`test.txt`并返回。
路由是Express的核心特性之一,它定义了如何响应HTTP请求。在示例中,`app.get('/', function(req, res) { res.end(''); })`定义了一个GET请求的路由,当用户访问根路径`/`时,会返回空字符串。
Express还支持多种类型的路由方法,包括`.get()`, `.post()`, `.put()`, `.delete()`等,分别对应HTTP协议中的不同请求方法。同时,可以通过`.route()`创建更复杂的路由,例如处理同一路径的不同请求方法:
```javascript
app.route('/article')
.get(function(req, res) {
res.end('route /article get');
})
.post(function(req, res) {
res.end('route /article post');
});
```
对于具有动态部分的路由,如`/news/:newsId`,我们可以通过`app.param()`定义参数处理器,提取并处理路由参数。在示例中,`app.param('newsId', function(req, res, next, newsId) {...})`会捕获`/news/123`这样的URL中的`123`,将其存储在`req.newsId`中,供后续处理使用。
我们通过`app.listen(3001, function() {...})`启动服务器,让应用监听指定的端口(这里是3001),并打印出运行信息。
本教程通过实例演示了如何使用Express创建简单的web应用,包括引入依赖、初始化应用、设置中间件、定义路由和处理动态路由参数等基本操作。这些知识为初学者理解Express和Node.js的web开发奠定了坚实的基础。通过深入学习和实践,你可以创建更复杂、功能丰富的应用程序。在实际项目中,你还可以结合其他模块,如数据库连接模块、模板引擎等,进一步提升应用的功能和性能。