返回介绍

处理相关参数

发布于 2025-04-26 18:09:28 字数 2342 浏览 0 评论 0 收藏 0

路由实例

我们可能经常像下面这样在 Express 应用中写路由处理:

var express = require('express');
var app = express();
app.get('/todos/', function(req, res){
  ...
});
app.get('/todos/:id', function(req, res){
  ...
});
app.post('/todos', function(req, res){
  ...
});

从上面的例子中,我们可以看出,有一部分代码功能重复了。我们可以使用一个 route 实例来优化这部分代码:

var express = require('express');
var app = express();
var todosRoute = app.route('/todos');
...
app.listen(3000);

代码 var todosRoute = app.route('/todos') 会处理所有/todos 路径的请求,并返回路由对象。

路由部分的代码可以像下面这样来写:

var express = require('express');
var app = express();
app.route('/todos')
  .get(function(req, res){
  })
  .post(parseUrlEncoded, function(req, res){
  });
...

app.route 函数接受和前面一样的参数形式:

app.route('/todos/:id')

重构路由

随着我们应用功能的增加,写逻辑代码的文件也会随着变大。由于太多的代码导致文件不太好维护,所以我们可以这样来拆分文件:

var express = require('express');
var app = express();
app.use(express.static('public'));
var todos = require('./routes/todos');
app.use('/todos', todos);
app.listen(3000);

正如你所看到的,我们将路由部分的代码放在了./routes/todos.js 这个新文件里面。下面看看如何通过 Node 的模块系统来组织不同的代码文件。

在项目的目录下新建一个 routes 文件夹,在该文件夹下新建一个 todos.js 的文件。

var express = require('express');
var router = express.Router();
...
module.exports = router;

我们使用 module.exports 这个方法将 router 导出为一个 Node 的模块:

var express = require('express');
var router = express.Router();
var bodyParser = require('body-parser');
var parseUrlencoded = bodyParser.urlencoded({ extended: false });
var todos=[
  'Todo item 1',
  'Todo item 2',
  'Todo item 3'
];
router.route('/'); // 安装目录相对于根目录


module.exports = router;

最后将之前的路由处理移动到新的文件中:

...
router.route('/')
.all(function(req, res, next){

})
.get(function(req, res, next){

})
...

回到 index.js 文件,在文件中载入新的路由模块:

var express = require('express');
var app = express();
app.use(express.static('public'));
var todos = require('./routes/todos');
app.use('/todos', todos);
app.listen(3000);

如果需要做其他的路由处理,直接载入新的路由模块就可以了:

var express = require('express');
var app = express();
app.use(express.static('public'));
var todos = require('./routes/todos');
var users = require('./routes/users');
app.use('/todos', todos);
app.use('/users', users);
app.listen(3000);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。