最近准备用 export
和 import
对 js 代码模块化。
实作过程中,我做了一个骚操作,就是两个模块相互依赖引用,被主管一顿炮轰。代码示例如下:
import A from A
export class B {
//......
}
import B from B
export class A {
//......
}
也就是说,A 中会用到 B,B 中会用到 A,但是 A 和 B 使用层级差别的,A 更高。
这样的设计很明显是不对的,但是我不能很好的表达这样设计的缺陷。
然后我浏览了下网上,也有人说这样的设计有时候很正常,所以我现在就很懵逼 A___A
所以想请教一下大家,我上述这样的模块间的依赖设计,有哪些缺点,在哪些情景下这样的设计是合理的?### 问题描述
深入 CommonJs 与 ES6 Module
因为
es module
的导出是动态绑定的,只要你不是导入模块就立马调用就可以循环引用导入模块立刻调用可以用
function
的声明提升解决,但在function
内不要用到外部变量ps: 我在这里回答一下评论的内容,这样更直观一点
我举一个问题:
上面代码为什么会报错?这样写有什么缺点?
回答:
你需要在用之前先对a变量进行定义,并赋值为引用类型
或者利用
function
的声明提升做到追问:
这样的代码会导致什么问题,原理是什么,有什么缺点,我并不是要知道解决方式
这个我 不知道怎么回答(缺点是你的代码会报错?),因为错误的代码必然会报错,修改为正确的代码就行了
模块循环引用就跟这个例子一样,只需要写正确的代码就行了
在
nodejs
文档中有句话:模块循环引用的缺点就是:不理解模块循环原理 或者 项目庞大混乱的模块出现直接或间接的循环引用 所导致的错误代码,使得程序偏离预期的工作