看ember的文档,一直看不明白注入。
到了后来,ember的注入方式还变了。
求高手解释!
//1.10.0的注入
Ember.Application.initializer({
name: 'logger',
initialize: function(container, application) {
var logger = {
log: function(m) {
console.log(m);
}
};
application.register('logger:main', logger, { instantiate: false });
application.inject('route', 'logger', 'logger:main');
}
});
//这是1.13.0的注入
export function initialize(container, application) {
var logger = {
log(message) {
console.log(message);
}
};
application.register('logger:main', logger, { instantiate: false });
application.inject('route', 'logger', 'logger:main');
}
export default {
name: 'logger',
initialize: initialize
};
注入方式没本质的区别,第二种注入方式只是配合Ember-Cli时的处理方式而已。
在Ember-Cli下使用第二种方式比较方便进行文件的管理,在initializers文件下,各个文件负责各自的initializer看起来比较整齐,当然你也可以自己用grunt使用第一种方式进行构建。
//-----------------------------------------
注入这个概念和Spring中的DI差不多是一个东西
在大部分场景下,Ember获取对象的方式都是通过 container生成对象
过程等同于
总之注入最大的目的在于解耦代码
第二种是类似es6模块化的一些思想,方便引入和构建