前言
随着前端承担的职责越来越重,前端应用向着复杂化、规模化的方向发展。大型项目模块化是一种趋势,不可避免模块之间要相互依赖,此外还有很多第三方包。这样的话如何去管理这些繁杂的文件,是一个不可避免的话题。此时作为一种已经被实践证明过的思想模式一直得到大家的青睐,这就是控制反转(IOC)。
IOC定义
先看一下维基百科上的定义:
控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入(Dependency Injection,简称DI),还有一种方式叫“依赖查找”(Dependency Lookup)。通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体,将其所依赖的对象的引用传递给它。也可以说,依赖被注入到对象中。
原则
高层模块不应该依赖低层模块。两个都应该依赖抽象
抽象不应该依赖具体实现
面向接口编程,而非面向实现编程
针对前端来说,接口的概念不那么清晰明了,不像强类型语言。
概念是比较枯燥的,下面结合例子来看一下可能更好理解一点。
目的
根据概念可以看到最主要的目的就是降低耦合,提高扩展性。在深究之前,我们先看下代码耦合
代码耦合
所谓耦合,可以如下图显示:
比较清晰明了,代码相互之间的联系太直接:
假如obj2报错,那么整个系统也都报错