javascript - 是否可以从 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 的内容基本上包含了两次,这对我来说似乎是不好的做法。
我的问题是,最终,我怎样才能拆分我的代码,同时仍然能够像上面的例子一样引用变量,但避免不良做法?
解决方案
...那么这意味着 data.js 的内容基本上被包含两次...
不,它没有。它们被使用了两次,但内存中只有一个模块副本;它没有两个副本。如果您需要从data.js
多个地方导出的信息,则在您需要的每个地方都导入它是完全正常的。
推荐阅读
- apache-kafka - 考虑 Kafka Streams 和 Spring Cloud Stream 的设计问题
- r - R中是否有可以生成数据的函数/包,您可以在其中指定变量之间的关系?
- sql - 将 SQL 查询结果写入 Databricks 中的临时视图
- javascript - 如何跟踪自定义事件
- reactjs - React - 根据悬停的元素更改文本
- c++ - Wireshark 开发 - registerTapListener
- ruby - 如果文件不存在,Ruby CSV.open 会创建文件吗?
- excel - 如何获取一列中每个单元格中输入的日期并自动将 7 天添加到另一列中的相应单元格?(Excel)
- authentication - Testcafe 使用令牌重定向
- html - 如何阻止父容器调整大小以适应动态内容