问题描述
虽然自然进程会,我会喜欢为开发环境保留固定装置,同时利用不同的Ember数据适配器进行生产。
Although the natural progression would replace the fixture adapter with another adapter, I'd like to retain fixtures for development environment while leveraging a different Ember data adapter for production.
这是由于:
- 逐步增强的重迭迭代
- 为了在iOS应用程序中嵌入UIWebView中,生产配置与本地程序集的数据交换紧密耦合。
资产编译是基于加载Web或Native API:
Ember CLI asset compilation is based on broccoli to load either a Web or Native API:
app.import({
development: 'vendor/company/WebAPI.js',
production: 'vendor/company/NativeAPI.js'
});
但是,我不确定如何利用此模式更改适配器。
However, I'm unsure how to leverage this pattern to change adapters.
为了开发,我想使用模拟数据或http服务在浏览器中启用测试。
For development, I want to use mock data or http services to enable testing in browser.
因此,在开发环境中启动Ember服务器可以利用灯具。
Therefore, launching Ember server in development environment leverages fixtures.
ember server --environment=development
此配置将扩展进行开发:
This configuration would extend FixtureAdapter for development:
var ApplicationAdapter = DS.FixtureAdapter.extend({
/* ... */
});
export default ApplicationAdapter;
生产环境
然而,复杂度是需要不同适配器的生产环境。
Production Environment
However, the complexity is production environment where different adapters are needed.
在生产中启动Ember服务器时,服务通过一个bridge://方案提供,其中原生iOS应用程序正在管理传输层和数据模型。
When launching Ember server in production, services are provided via a bridge:// scheme where the native iOS app is managing transport layer and data models.
ember server --environment=production
此配置将扩展基础适配器用于生产:
This configuration would extend the base Adapter for production:
var ApplicationAdapter = DS.Adapter.extend({
/* ... */
});
export default ApplicationAdapter;
如何在Ember应用程序中使用多个适配器?应用程序如何交换适配器,或者路由中的商店可能会定义不同的适配器?
How can multiple adapters be used in an Ember app? How is the adapter swapped in the App, or perhaps the store from the route would define a different adapter?
推荐答案
您可以提供一个全局应用程序适配器,将根据当前环境了解您的环境并导出最适合的适配器(如果需要,您的序列化程序也是同样的):
You could provide a global application adapter that will be aware of your environment and export the best suited adapter depending on the current environment (same thing for your serializer if needed):
+-- 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;
希望能帮助
这篇关于在每个Ember环境中保留具有多个适配器的固定装置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!