我正在尝试根据 Express 4.x new express.Router()
组织我的项目方法。
如Express' documentation描述一下,
A router object is an isolated instance of middleware and routes. You can think of it as a “mini-application,” capable only of performing middleware and routing functions.
为了更好地理解,让我们考虑一下这个项目结构:
project/
index.js
routes/
myRouter.js
...
...
以及文件本身:
index.js
const express = require('express');
const app = express();
const path = require('path');
const myModule = require('myModule');
app.use('/myRouter', require('routes/myRouter'));
// some more code using myModule set of functions
routes/myRouter.js
const express = require('express');
const path = require('path');
const router = express.Router();
const myModule = require('myModule');
router.get('/', function(req, res){
// some more code using myModule set of functions
});
module.exports = router;
如您所见,这两个文件都需要使用 myModule
的函数,因此据我所知这两个文件都需要 require myModule
。
Express 如何处理这种情况?
据我所知,Express 通过 module.exports
直接将 myRouter
的代码导入到 index.js
中。如果是这样,引擎是否以某种方式预编译它?那么 myRouters' requests
不是多余的吗?
如果不是,它对性能有何影响?我应该避免使用路由器来完成我的任务吗?
最佳答案
首先,它没有被编译,它不是 es6。第二个 app.js 导入模块并为您的路由运行该模块,因此在 myRouter.js 中导入是完全必要的。 This文章肯定会帮助您理解模块。另一件事是它确实会降低您的应用程序性能。 Express 用于 Node.js,Node.js 导入使用 V8 引擎进行优化。所以不用担心性能。
关于node.js - Express.js 中的express.Router() 和requires,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45924402/