如何将部署设置传递给应用程序



我正在尝试将由Cherrypy托管的Web服务备份的Qooxdoo Web应用程序部署到服务器上。但是,我需要将客户端QooxDoo应用程序配置为应用程序所在的服务器的主机名,以便将AJAX回调解析为正确的主机。我有一种感觉,我可以使用Generate.py QooxDoo脚本使用适当设置的客户端代码生成客户端代码,但是通过文档的阅读并没有帮助清楚地表明如何。有人有任何技巧吗?

(fwiw,我知道如何使用php和其他客户端框架(例如Echo 3(进行此操作 - 我将索引文件是一个php文件,在读取本地系统配置文件之前回发送客户端代码。但是,在这种情况下,generate.py文件是工具链的必要组成部分,因此我看不到如何做到这一点。(

您可以使用qx.core.enviroment类添加/获取项目的配置。推荐方法仅在汇编时间,但是如果您想在运行时间配置应用程序时,才会有黑客攻击。

汇编时间的配置

如果要在编译时间配置环境,请参阅此信息。

在两种情况下,在您向应用程序添加任何环境变量后,都可以使用qx.core.environment.get方法访问它。

在运行时间

警告此方法不支持/从QOOXDOO中记录。基本上是hack

如果您想在运行时间内提供一些环境配置,则必须在qooxdoo加载之前执行此操作。为此,您可以将一些JavaScript添加到您的网页中,例如

window.qx = { };
window.qx.$$environment = {
 "myawsomeapp.hostname": "example.org",
};

应该在qooxdoo开始加载之前在页面中的某个位置添加这一点,否则不会具有理想的效果。此方法的优点是您可以将配置推向客户端,例如您的应用程序实例之间可能有所不同的API键。

最简单的方法是从window.location即时撰写Ajax URL;理想情况下,您将能够使用window.location.origin,对于此stackoverflow网站,该网站将是" https://stackoverflow.com",但IE上存在一些问题。

跨平台解决方案是:

var urlRoot = window.location.protocol + "//" + 
  window.location.hostname + (window.location.port ? ':' +
  window.location.port: '');

这意味着您的URL始终是正确的,即使服务器名称更改(例如,在测试服务器上而不是生产上(。

有关更多详细信息,请参见此处:https://tosbourn.com/a-fix-for-window-location-origin-internet-explorer/

相关内容

最新更新