新版本的Express(Nodejs)

新版本的Express(Nodejs)

新版本的 express 里面的 app.use(app.router); 不能用app.use(express.router(routes)) 替换嘛?

4 回复

当然可以。在新版本的 Express 中,app.use(app.router); 已经被弃用了。取而代之的是更简洁的方式来进行路由处理。你不需要显式地调用 app.router,因为 Express 会自动处理路由。

示例代码

假设我们有一个简单的 Express 应用程序,包含几个路由:

const express = require('express');
const app = express();

// 定义一些路由
app.get('/', (req, res) => {
  res.send('Hello World!');
});

app.post('/submit', (req, res) => {
  res.send('Form submitted!');
});

app.listen(3000, () => {
  console.log('App is running on port 3000');
});

在这个例子中,我们定义了两个路由:

  1. 一个 GET 路由,响应根路径 '/'
  2. 一个 POST 路由,响应 /submit 路径。

解释

  • 自动路由处理:在新版本的 Express 中,你不需要手动调用 app.router 或者任何类似的函数。Express 会自动处理所有的路由。这意味着你可以直接定义你的路由,Express 会根据请求的方法(如 GET、POST 等)和路径来匹配相应的处理函数。

  • 路由顺序:需要注意的是,Express 会按顺序检查路由。因此,确保将最具体的路由放在最前面。例如,如果你有一个通配符路由(如 '*'),它应该放在所有其他路由之后。

总结

新版本的 Express 不需要显式地调用 app.use(app.router)。你可以直接定义你的路由,并且 Express 会自动处理它们。这种方式不仅更加简洁,也更易于维护和理解。

希望这能帮助你更好地理解和使用新版本的 Express!


那个版本?

3.x 不应该是 app.use(app.router) routes(app) 这样么…

我在之前的那个书上看到的… 然后我初次用!所以 不太清楚!

在新版本的 Express.js 中,app.use(app.router); 这种写法已经被弃用了。Express 4.x 及以上版本已经不再包含内置路由中间件,因此你需要使用更现代的方式来组织你的路由。

示例代码

假设你有一个简单的 Express 应用程序,并且你希望将路由分离到不同的文件中。你可以这样做:

  1. 创建一个 routes 文件夹,里面包含一个 index.js 文件:
// routes/index.js
const express = require('express');
const router = express.Router();

router.get('/', (req, res) => {
    res.send('Hello from the home page!');
});

router.get('/about', (req, res) => {
    res.send('Hello from the about page!');
});

module.exports = router;
  1. 在主应用程序文件中使用这些路由:
// app.js
const express = require('express');
const indexRouter = require('./routes/index');

const app = express();

// 使用路由
app.use('/', indexRouter);

const PORT = process.env.PORT || 3000;

app.listen(PORT, () => {
    console.log(`Server is running on port ${PORT}`);
});

解释

  • 分离路由:将路由逻辑分离到单独的文件中,使代码更加模块化和易于维护。
  • 使用 app.use():Express 4.x 及以上版本使用 app.use() 来挂载中间件和路由。你不需要显式调用 app.router

这种方法不仅适用于简单的应用,也适用于更复杂的应用结构。它使得路由管理变得更加灵活和可扩展。

回到顶部