当我们的项目开发得越来越复杂,就不得不面临2个问题
- 冲突
- 依赖
对于冲突,我们用一个简单的例子来描述这个问题。
比如你的同事开发了一个叫做slider.js
的组件,而根据需要,你需要使用这个组件来完成你自己的功能,那么这个时候有一个问题。当你引入这个组件,然后一运行,发现报错了,结果你才发现,在slider.js
中,有这样一段代码.
var timer = null;
timer = setInterval();
可是在你自己的代码当中,刚好也是使用了这个叫做timer
的变量来定义自己的定时器。于是这个时候就会产生不必要的麻烦。这就是冲突问题。
关于依赖问题,我也有一个简单的例子来说。这个时候产品经理一个需求来,要实现一个XXX功能,你在开发这个功能的时候,你的同事告诉你,需要用到playgame.js
组件。于是你引入了playgame.js
进行开发
<script src= "playgame.js"></script>
可是呢,duang的一声,报错了,你百思不得其解,于是与同事沟通,同事才一拍脑门,哦,不好意思,忘记了告诉你,playgame.js
还需要赖一个叫做a.js
的文件。问题总算解决了,于是你又引入了a.js
<script src="a.js"></script>
<script src="playgame.js"></script>
OK,没有问题了,搞定。于是你在用到了playgame.js
的10个地方都添加了a.js
.可是后来,产品变需求了,playgame.js
功能扩展,不但要依赖a.js
,还需要依赖b.js
,没办法,你又要在10个地方都添加上b.js
<script src="a.js"></script>
<script src="b.js"></script>
<script src="playgame.js"></script>
再到后来,觉得playgame.js
功能太过庞杂,效率很低,优化之后呢,又不要a.js
了。这个时候,为了减少叶面加载的压力,又只好无可奈何的删掉a.js
的引用。变成了
<script src="b.js"></script>
<script src="playgame.js"></script>
可是删掉之后发现,报错了,为什么?为了解决这个问题加班加点,放了女朋友的鸽子,晚上被半夜回家被锁门外,凄凉的度过一个寒冷的夜晚,回想刚才的bug潸然泪下,原来尼玛还有另外一个叫做run.js
的文件也要依赖a.js
,加回去就OK,真尼玛的坑爹啊.
<script src="a.js"></script>
<script src="b.js"></script>
<script src="playgame.js"></script>
<script src="run.js"></script>
终于在万般折磨之下,你终于对这个项目很熟悉了,从一个新人变成了老油条,可是当另外一个新人来的时候,你发现要带他解决这个问题你自己也头大。周而复始,这个项目终于因为这个依赖问题,坚持不下去了,公司也倒闭,哈哈,脑洞大开。所以为了解决冲突和依赖的问题,模块化应运而生。
当然模块化对于性能的提升,代码后期的维护,都有着十分重要的效果,在学习中,我们慢慢体会。