0

我正在为我正在构建的应用程序(使用 Ext JS + 另一个应用程序的后端)制定构建过程,并尝试查看它是否存在更改本地 URL 的“最佳实践”方式(例如 data/my-data. json) 到我的开发服务器的后端,然后到我的生产服务器的后端。

在我的商店中,我目前有以下代码:

Ext.define('APP.store.DataRecords', {
    extend: 'Ext.data.Store',
    model: 'APP.model.DataRecord',
    autoLoad: true,

    proxy: {
        type: 'ajax',
        api: {
            read: 'data/data-records.json',
            update: 'data/update-data-records.json'
        },
        reader: {
            type: 'json',
            root: 'records',
            successProperty: 'success'
        }
    }
});

运行 sencha build 命令后,理想情况下,我希望将 Store 转换为以下内容:

Ext.define('APP.store.DataRecords', {
    extend: 'Ext.data.Store',
    model: 'APP.model.DataRecord',
    autoLoad: true,

    proxy: {
        type: 'ajax',
        api: {
            read: 'http://mydevserver/.../data-records.json',
            update: 'http://mydevserver/.../update-data-records.json'
        },
        reader: {
            type: 'json',
            root: 'records',
            successProperty: 'success'
        }
    }
});

我想如果没有任何“直接”方法,我需要构建一个额外的脚本,它首先重新映射我所有的 URL,然后调用 sencha 编译器。

PS我知道通常这一切都是通过使用“相对”URL 透明地发生的,但是我正在与之交互的后端有一些限制,这可以防止这种情况发生。

想法?

提前致谢!

4

2 回答 2

1

我建议不要在连接到您的商店时使用完整的 URL。如果您正在使用 Ajax 调用并试图转到不同的域名,则此类调用将被视为跨站点调用,浏览器将阻止它们。

于 2012-04-23T10:32:55.410 回答
0

在你的 app.json

    /**
     * override objects for setting build environment specific
     * settings.
     */
    "production": {
      "api_url": "http://example.com"
    },

    "testing": {
      "api_url": "http://localhost:3000"
    },

    "development": {
      "api_url": "http://localhost:3000"
    },

在您商店的代理配置中

    proxy: {
      type: 'rest',
      url: Ext.manifest.api_url + '/products',
      format: 'json',
      withCredentials: true,
      useDefaultXhrHeader: false,
      reader: {
        type: 'json',
        rootProperty: '',
        totalProperty: ''
      },
      writer: {
        type: 'json'
      }
    }

于 2015-04-02T10:52:47.030 回答