假设我有以下app.js
文件(当前不使用 EAK、、、、Ember 1.4.0
)Handlebars 1.3.0
,jQuery 2.1.0
它设置了不同的“单例”实例,可以App.#name
在整个应用程序中访问(不仅Controllers
,Routes
或者Views
,还有Helpers
,自定义Utils
等等),比如:
window.App = Ember.Application.create({});
App.CustomAjax = App.utils.ajax.CustomAjax.create({secHash: 'someSecurityHash'});
App.BrowserStateListener = App.utils.browser.BrowserStateListener.create();
App.UserManager = App.utils.user.CustomUserManager.create({user: App.utils.user.User.create({}), someOtherDependency: RAApp.utils.some.SomeOtherDependency.create({someValue: 'someValue'})});
....
......还有更多这样的。
我如何将它转移到 ES6-Modules 中,以便我可以在这个应用程序中使用 EAK?我应该Ember.Application.initializer
为此目的使用,以便我可以像这样从方法的application
参数中引用应用程序initialize
吗?
import Resolver from 'ember/resolver';
import CustomAjax from 'appkit/utils/ajax/custom-ajax';
var App = Ember.Application.extend({
LOG_ACTIVE_GENERATION: true,
LOG_MODULE_RESOLVER: true,
LOG_TRANSITIONS: true,
LOG_TRANSITIONS_INTERNAL: true,
LOG_VIEW_LOOKUPS: true,
modulePrefix: 'appkit', // TODO: loaded via config
Resolver: Resolver['default']
});
Ember.Application.initializer({
name: 'init1',
initialize: function (container, application) {
// set it like this?
application.CustomAjax = CustomAjax.create({secHash: 'someSecurityHash'});
}
});
export default App;
但是,我将如何import
只使用CustomAjax
对象 - 或我这样设置的任何其他对象?如果我尝试,import App from 'appkit/app'
我不会获得整个应用程序命名空间,是吗?