首页 > 解决方案 > 是否可以从 Javascript 中的 require() 文件中“向后引用”某些内容?

问题描述

如果我的问题不简洁,那么第一次使用 SO 用户请原谅我。从本质上讲,我已经开始着手一个接近 2000 行代码的项目,现在我决定将它重构为几个文件/模块。

我的文件以前类似于这样:

const data = {
    thingOne: "hello",
    thingTwo: "goodbye"
}

switch (command) {
    case 'hello':
        console.log(data.thingOne);
    break;
    case 'goodbye':
        console.log(data.thingTwo);
    break;
}

拆分代码后,它类似于以下内容:

数据.js

module.exports = {
    thingOne: "hello",
    thingTwo: "goodbye"
}

函数.js

module.exports = {
    hello: () => {console.log(data.thingOne)},
    goodbye: () => {console.log(data.thingTwo)}
}

main.js

const data = require('data.js');
const functions = require('functions.js');
// ...

这显然是行不通的,因为“数据”在functions.js中没有任何意义,我能看到的最明显的“修复”就是简单地将data.js包含在functions.js中,但如果functions.js和data.js 包含在 main.js 中,那么这意味着 data.js 的内容基本上包含了两次,这对我来说似乎是不好的做法。

我的问题是,最终,我怎样才能拆分我的代码,同时仍然能够像上面的例子一样引用变量,但避免不良做法?

标签: javascriptnode.jsreference

解决方案


...那么这意味着 data.js 的内容基本上被包含两次...

不,它没有。它们被使用了两次,但内存中只有一个模块副本;它没有两个副本。如果您需要从data.js多个地方导出的信息,则在您需要的每个地方都导入它是完全正常的。


推荐阅读