如何在 Express 中设置路线?app.use() 与 app.get()

Dim*_*ims 4 routes node.js express

我有站点存根,其中路由设置在两个位置。

首先在app.js

...
var index = require('./routes/index');
var users = require('./routes/users');
...
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', index);
app.use('/users', users);
...
Run Code Online (Sandbox Code Playgroud)

某些内容已设置为use. 接下来是引用的脚本,例如index.js

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

var fs = require('fs');
var path = require('path');
var config = require('../config');

/* GET home page. */
router.get('/', function(req, res) {

    var data = {};
    ...
Run Code Online (Sandbox Code Playgroud)

假设我希望使用Express Routing文档中的信息。例如,我应该将路由放在哪里/users/:userId/books/:bookId

在文档中,get被调用 against app,而在我的存根中,get被调用 againstrouter和 以两步方式。

在哪里挂钩?

Vas*_*las 6

在文档中get被调用是app因为它们在app.js文件中设置了端点。在您的index.js文件中返回路由器module.exports = router;,这是应用程序的路由器。现在在你的app.js文件中说

app.use('/', index);
app.use('/users', users);
Run Code Online (Sandbox Code Playgroud)

这些是路线。您是说文件中的所有端点index均以 开头/,文件中的端点users均以 开头/users

所以路线/users/:userId/books/:bookId必须users.js像这样在文件中

router.get('/:userId/books/:bookId', function(req, res, next) {
   // do something
});
Run Code Online (Sandbox Code Playgroud)