依赖注入的理解
依赖注入(DI)是一种让代码管理其依赖关系的设计模式,目的是为了解耦。
举个例子:假设我们定义了一个方法,在方法里面需要一个对象,我们在此方法内部声明该对象,那么这个对象就和这个方法是永远绑定状态。
用上面的例子来说其实就是在方法内部把对需要的对象的【依赖】控制交给第三方了,第三方负责依赖的创建和存储。这样控制就反转了,由自己转换成第三方了。
如何实现解耦的简单代码:
// 如果不需要依赖注入这样写
function demo(){
const person = new Object({
name: 'test',
age: 18
})
//
const result = person.age++
return result
}
demo()
// 换成依赖注入方式,这样就可以合person解耦了
function demo1(person) {
return person.age++
}
const person = new Object({
name: 'test',
age: 18
})
demo1(person)
angularjs的依赖注入:
someModule.controller('MyController', ['$scope', 'dep1', 'dep2', function($scope, dep1, dep2) {
...
$scope.aMethod = function() {
...
}
...
}]);
vue2.0的依赖注入:
父组件:
export default {
provide: function () {
return {
getData: this.getData
}
},
data() {
return{}
},
methods: {
getData(fn) {
// 业务代码
fn('传给子组件的值')
}
}
}
export default {
inject: ['getData'],
data() {
return{}
},
mounted() {
this.init()
},
methods: {
init() {
// 业务代码
this.getData((param)=> {
// 父组件传过来的值
})
}
}
}

浙公网安备 33010602011771号