【发布时间】:2015-10-19 04:10:48
【问题描述】:
假设我有一个应用程序如下:
-
server.js(main) 需要不同的外部节点包,例如underscore.js。var Underscore = require("underscore"); -
server.js还需要在我的应用程序本身中定义的一些模块;例如,它可能需要一个路由器模块来处理Express路由。var Router = require("./sources/router.js"); -
然后我的
router.js文件如下:var Router; Router = (function() { function Router(app, oauth) { app.get('/', function(request, response) { // ... }); } return Router; })(); module.exports = Router;
问题:
-
如果我想在我的
Router模块中使用underscore,我应该重新要求吗?我应该对每个模块都这样做吗?有什么影响? 我最终会得到类似的东西:var Router; Router = (function() { Router.prototype.underscore = require("underscore"); function Router(app, oauth) { app.get('/', function(request, response) { // this.underscore. ... // using underscore ... }); } return Router; })(); module.exports = Router;和
var Underscore = require("underscore"); var Router = require("./sources/router.js"); router = new Router(); -
我显然也可以在初始化
Router时将它作为参数注入,但在我看来,这在我可能最终使用数十个包的应用程序中并不是一个可行的选择,尤其是对于非常通用目的 像这样的包。var underscore = require("underscore"); var Router = require("./sources/router.js"); var router = new Router(underscore); 或者,我可以将
underscorevar 设置为全局变量,但我不太喜欢这个选项。还有其他选择吗?
在每个模块中系统地导入包对执行时间、内存有什么影响? 我想了解节点引擎在这种情况下的行为。
【问题讨论】:
标签: javascript node.js require node-modules