node.js - Express.js 中的express.Router() 和requires

标签 node.js express caching

我正在尝试根据 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/

相关文章:

javascript - 从node.js控制台程序连接到socket.io node.js服务器

node.js - 我应该在 Controller 和域服务之间放置命令总线吗?

javascript - 服务器端未定义 renderProps/React/React-Router + Node/Express.js 的同构渲染

ios - NSMutableDictionary 缓存和/或大小限制

ios - Swift iOS - API 数据和缓存

javascript - 查找 2 id 在 Mongoose 数组中的位置

javascript - 尝试代理 ES6 类构造函数时出现 TypeError

node.js - 验证不同类型用户的身份验证 token 的最佳方法是什么?

node.js - ES6 - 如何导入 connect-mongo( session )?

Javascript service worker : Fetch resource from cache, 但也更新了它