返回

Express 路由器导出:ES6 named export 解惑

javascript

如何在 ES6 中导出 Express 路由器?

作为一名程序员,我经常使用 Express.js 构建 Node.js 应用程序。最近,我将我的模块重写为 ES6 格式,遇到了导出 Express 路由器的问题。

问题:

当尝试使用 export 语法导出路由器时,我遇到了以下错误:

TypeError: Router.use() requires a middleware function but got a Module

原因:

ES6 模块中默认导出需要是一个函数或类,而 Express 路由器是一个对象。

解决方案:

Express 文档建议使用 named export 导出路由器。以下是如何做到的:

export const router = express.Router();

然后,在导入该模块时,可以使用如下方式导入路由器:

import { router } from './route/article.js';

示例:

以下是一个完整的示例,演示如何导出和导入 Express 路由器:

route/article.js

export const router = express.Router();

main.js

import { router } from './route/article.js';

router.get('/', (req, res) => {
  res.send('Hello, world!');
});

app.use('/', router);

常见问题解答:

1. 为什么要使用 named export 导出路由器?

默认导出只能导出一个值,而 named export 可以导出多个值。对于导出多个路由器或其他值来说,named export 更有用。

2. named export 和 default export 有什么区别?

default export 是模块的默认导出,只能有一个。named export 是模块的命名导出,可以有多个。

3. 如何在导入时使用 named export?

使用大括号 ({}) 来指定要导入的 named export。例如:

import { router } from './route/article.js';

4. named export 有什么好处?

named export 使得代码更加模块化和可维护。它允许您明确地指定要导出的值,并防止命名冲突。

5. 什么时候应该使用 default export?

当您只需要导出一个值,并且不希望指定名称时,可以使用 default export。

结论:

通过使用 named export,我们可以轻松地将 Express 路由器导出到 ES6 模块。这将有助于编写更加模块化和可维护的 Node.js 应用程序。