尽管按照自然的进展,将用另一个适配器替换fixture适配器,但我希望保留用于开发环境的fixture,同时利用不同的Ember数据适配器用于生产。
这是因为:
- 渐进增强的重迭代
- 旨在从iOS应用中嵌入到UIWebView中运行,生产配置与桥接调用本地程序集来获取数据紧密耦合。
Ember CLI资产编译是基于西兰花加载Web或本机API:
app.import({
development: 'vendor/company/WebAPI.js',
production: 'vendor/company/NativeAPI.js'
});
但是,我不确定如何利用此模式来更改适配器。
开发环境对于开发,我想使用模拟数据或http服务来启用浏览器中的测试。
因此,在开发环境中启动Ember服务器需要使用fixture。
ember server --environment=development
这个配置将扩展FixtureAdapter用于开发:
var ApplicationAdapter = DS.FixtureAdapter.extend({
/* ... */
});
export default ApplicationAdapter;
生产环境然而,复杂性是需要不同适配器的生产环境。
当在生产环境中启动Ember服务器时,服务通过一个桥接://方案提供,其中原生iOS应用管理传输层和数据模型。
ember server --environment=production
此配置将为生产扩展基本适配器:
var ApplicationAdapter = DS.Adapter.extend({
/* ... */
});
export default ApplicationAdapter;
如何在一个Ember应用中使用多个适配器?适配器是如何在App中交换的,或者路由中的store会定义一个不同的适配器?
您可以提供一个全局应用程序适配器,它将了解您的环境,并根据当前环境导出最适合的适配器(如果需要,序列化器也是如此):
+-- app
| |-- adapters
| | `-- application.js
| | `-- custom-adapter.js
| |-- ...
| |
| |-- serializers
| `-- application.js
| `-- custom-serializer.js
application.js:
import DS from 'ember-data';
import config from '../config/environment';
import CustomAdapter from './custom-adapter';
var adapter = DS.FixtureAdapter.extend({});
if (config.environment === 'production') {
adapter = CustomAdapter;
}
export default adapter;
custom-adapter.js :
import Ember from 'ember';
import DS from 'ember-data';
var adapter = DS.RESTAdapter.extend({
// your custom RESTAdapter
});
export default adapter;
希望对大家有所帮助