虽然自然进展replace the fixture adapter with another adapter,但我希望保留用于开发环境的灯具,同时利用不同的Ember数据适配器进行制作。
这是由于:
Ember CLI资产编译基于broccoli加载Web或Native API:
app.import({
development: 'vendor/company/WebAPI.js',
production: 'vendor/company/NativeAPI.js'
});
但是,我不确定如何利用此模式更改适配器。
对于开发,我想使用模拟数据或http服务来启用浏览器测试。
因此,在开发环境中启动Ember服务器可以利用灯具。
ember server --environment=development
此配置将扩展FixtureAdapter以进行开发:
var ApplicationAdapter = DS.FixtureAdapter.extend({
/* ... */
});
export default ApplicationAdapter;
然而,复杂性是需要不同适配器的生产环境。
在生产中启动Ember服务器时,服务通过bridge://方案提供,其中本机iOS应用程序管理传输层和数据模型。
ember server --environment=production
此配置会扩展生产的基础Adapter:
var ApplicationAdapter = DS.Adapter.extend({
/* ... */
});
export default ApplicationAdapter;
如何在Ember应用程序中使用多个适配器?如何在App中交换适配器,或者路由中的商店是否会定义不同的适配器?
答案 0 :(得分:6)
您可以提供一个全局应用程序适配器,它将了解您的环境并根据当前环境导出最适合的适配器(如果需要,可以与序列化程序相同):
+-- 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;
希望它会有所帮助