gpt4 book ai didi

javascript - 在 Node.js 中,我如何加载我的模块一次,然后在整个应用程序中使用它们?

转载 作者:搜寻专家 更新时间:2023-10-31 22:58:38 25 4
gpt4 key购买 nike

我想创建一个全局模块文件,然后让我的所有文件都需要该全局模块文件。在该文件中,我将加载所有模块一次并导出已加载模块的字典。

我该怎么做?

我实际上尝试创建这个文件...每次我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;

最佳答案

1。使用魔法变量(不使用 var 声明)

使用魔法全局变量,不使用 var

例子:

fs = require("fs");

代替

var fs = require("fs");

如果您在声明变量时没有放置 var,则该变量将是一个魔法全局变量

推荐这个。特别是,如果您处于严格模式(“use strict”),那将根本不起作用。

2。使用 global.yourVariable = ...

附加到 global 对象的字段成为全局变量,可以从应用程序的任何位置访问。

所以,你可以这样做:

global.fs = require("fs");

这不像1.那么糟糕,但仍应尽可能避免。


以你的例子为例:

假设您有两个文件:server.js(主文件)和 global_modules.js 文件。

server.js 中,您将执行此操作:

require("./global_modules");

global_modules.js 中,您将拥有:

_modules = {
account_controller: require('/account/controller.js'),
account_middleware: require('/account/middleware.js'),
products_controller: require('/products/controller.js'),
...
}

global._modules = {...}

server.js 中,您将能够:

_modules.account_controller // returns require('/account/controller.js'),

关于javascript - 在 Node.js 中,我如何加载我的模块一次,然后在整个应用程序中使用它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20599002/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com