【问题标题】:Is there a way to do this in javascript? or will it work import/export有没有办法在javascript中做到这一点?还是可以导入/导出
【发布时间】:2024-01-23 14:14:01
【问题描述】:
//file1.js
    export function foo() {
        //todo
    }

//file2.js
    export function bar() {
        file1.foo();
        //todo
    }

//main.js
    import * as file1 from './file1'
    if(true) {
        import('./file2.js').then((_) => {
            //bar calls file1.foo()
            bar();
        });
  • 如您所见,有一个导出函数的 file1.js。一个file2.js 也导出了一个函数,但它使用了 file1.js 中存在的函数

    还有另一个文件 main.js,它总是在开始时导入 file1.js。 如果满足某些条件,则导入 file2.js 并调用函数 bar() 调用 foo() 存在于 file1.js 中

    如果以这种方式导入文件,这会起作用吗?如果没有的话 还有其他选择吗?

【问题讨论】:

  • file2 必须自己导入 file1,否则 file2 将无法使用 file1。导入不是全局的——它们是模块的本地(它们可能共享一个缓存,但给定的模块仍然需要导入它使用的东西)。
  • 为什么它不起作用?您能否解释您遇到的问题或重述问题?

标签: javascript ecmascript-6 import export


【解决方案1】:

解决方法是导入调用函数的文件。

//file1.js
export function foo() {  
  //todo
}

//file2.js
import * as file1 from "./file1.js"

export function bar() {
  file1.foo();
  //todo
}

//main.js
import * as file2 from "./file2.js";

file2.bar();

【讨论】:

  • 感谢您的回复。所以这是我猜的唯一方法。我将不得不在我需要的任何地方导入文件。将 file1.js 一次导入 main.js 将不起作用。
最近更新 更多