我正在尝试在我的Ember CLI应用程序中配置适配器,以根据环境使用不同的主机.在开发中,我希望它是默认的当前主机(让我通过--proxy选项自定义它,但在生产中我知道它将是http://some.url.
我尝试将我ENV导入我的应用程序适配器:
// adapters/application.js
import DS from "ember-data";
import ENV from "../../config/environment";
export default DS.ActiveModelAdapter.extend({
host: ENV.host
});
Run Code Online (Sandbox Code Playgroud)
但是我收到了一个tmp/tree_merger../config/environment.js不存在的错误.
虽然自然进展将用另一个适配器替换夹具适配器,但我希望保留用于开发环境的夹具,同时利用不同的Ember数据适配器进行生产.
这是因为:
Ember CLI资产编译基于西兰花加载Web或Native API:
app.import({
development: 'vendor/company/WebAPI.js',
production: 'vendor/company/NativeAPI.js'
});
Run Code Online (Sandbox Code Playgroud)
但是,我不确定如何利用此模式来更改适配器.
对于开发,我想使用模拟数据或http服务来启用浏览器测试.
因此,在开发环境中启动Ember服务器可以利用夹具.
ember server --environment=development
Run Code Online (Sandbox Code Playgroud)
此配置将扩展FixtureAdapter以进行开发:
var ApplicationAdapter = DS.FixtureAdapter.extend({
/* ... */
});
export default ApplicationAdapter;
Run Code Online (Sandbox Code Playgroud)
但是,复杂性是需要不同适配器的生产环境.
在生产中启动Ember服务器时,服务通过bridge://方案提供,其中本机iOS应用程序管理传输层和数据模型.
ember server --environment=production
Run Code Online (Sandbox Code Playgroud)
此配置将扩展基本适配器以进行生产:
var ApplicationAdapter = DS.Adapter.extend({
/* ... */
});
export default ApplicationAdapter;
Run Code Online (Sandbox Code Playgroud)
如何在Ember应用程序中使用多个适配器?如何在App中交换适配器,或者路由中的商店是否会定义不同的适配器?