TIM*_*MEX 4 javascript require node.js
我想创建一个全局模块文件,然后让我的所有文件都需要该全局模块文件.在该文件中,我将加载所有模块一次并导出已加载模块的字典.
我怎样才能做到这一点?
我实际上尝试创建这个文件...每次我require('global_modules'),所有模块都在重新加载.这是O(n).
我希望文件是这样的(但它不起作用):
//global_modules.js - only load these one time
var modules = {
account_controller: '/account/controller.js',
account_middleware: '/account/middleware.js',
products_controller: '/products/controller.js',
...
}
exports.modules = modules;
Run Code Online (Sandbox Code Playgroud)
var)没有使用魔法全局变量var.
例:
fs = require("fs");
Run Code Online (Sandbox Code Playgroud)
代替
var fs = require("fs");
Run Code Online (Sandbox Code Playgroud)
如果var在声明变量时没有放置,变量将是一个神奇的全局变量.
我不推荐这个.特别是,如果你处于严格模式("use strict"),那根本不会起作用.
global.yourVariable = ...附加到global对象的字段将成为可从应用程序中的任何位置访问的全局变量.
所以,你可以这样做:
global.fs = require("fs");
Run Code Online (Sandbox Code Playgroud)
这并不像1.,但在可能的情况下仍然可以避免.
对于你的例子:
假设您有两个文件:( server.js主文件)和global_modules.js文件.
在server.js你会做这样的:
require("./global_modules");
Run Code Online (Sandbox Code Playgroud)
在global_modules.js您将有:
_modules = {
account_controller: require('/account/controller.js'),
account_middleware: require('/account/middleware.js'),
products_controller: require('/products/controller.js'),
...
}
Run Code Online (Sandbox Code Playgroud)
要么
global._modules = {...}
Run Code Online (Sandbox Code Playgroud)
在server.js你将能够做到:
_modules.account_controller // returns require('/account/controller.js'),
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1999 次 |
| 最近记录: |