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

时间:2018-02-12 23:59:11

标签: qooxdoo

我正在尝试将由CherryPy托管的Web服务支持的Qooxdoo Web应用程序部署到服务器上。但是,我需要使用应用程序所在的服务器的主机名配置客户端Qooxdoo应用程序,以便Ajax回调解析到正确的主机。我有一种感觉,我可以使用generate.py Qooxdoo脚本的功能来生成具有适当设置的客户端代码,但阅读文档并没有帮助说清楚如何。有人有任何提示吗?

(FWIW,我知道如何使用像PHP和不同的客户端框架(如Echo 3)来处理这个问题 - 我的索引文件是一个PHP文件,它在读取本地系统配置文件之前发送回客户端代码。然而,在这种情况下,generate.py文件是工具链的必要部分,所以我不能简单地看到如何做到这一点。)

2 个答案:

答案 0 :(得分:1)

您可以使用qx.core.Enviroment类为项目添加/获取配置。建议的方法仅在编译期间,但如果您想在运行时配置应用程序,则会出现黑客攻击。

编译期间的配置

如果要在编译期间配置环境,请参阅this

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

在运行时间

警告qooxdoo不支持/记录此方法。基本上它是一个黑客

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

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

这应该在qooxdoo开始加载之前在页面的某处添加,否则它将没有理想的效果。此方法的优点是您可以将配置推送到客户端,例如一些api密钥可能在您的应用程序实例之间有所不同。

答案 1 :(得分:1)

最简单的方法是从window.location动态编写AJAX网址;理想情况下,您可以使用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-in-internet-explorer/