将配置传递到qoxdoo应用程序的最佳实践
Best practices for passing configuration to a qooxdoo app
复杂的qoxdoo(桌面)应用程序可能需要在启动时获得特定于部署的配置,例如:
- REST/WebSocket后端URL(可能与脚本/文档位置不同)
- 品牌数据
- 启用/禁用功能
- 性能调整
等等。目前,我们做以下工作:
<head>
<script type="text/javascript">
config = {
key1: "foo",
key2: "bar",
key3: "<%= getParameter("myapp.key3") %>"
};
</script>
<script type="text/javascript" src="script/myapp.js"></script>
</head>
正如您所注意到的,它是一个JSP,提供动态config.key3
以及静态config.key1
和config.key2
。我有点不喜欢这种方法,因为1)在qoxdoo应用程序代码中无法识别config
顶级对象,这会导致编译器警告,2)您可能会意外地与另一个同名的顶级对象发生冲突。有人能提出更好、更清洁的方法吗?支持静态和动态配置的组合非常重要。例如,一个开发人员将他的特定配置硬编码到一些VCS忽略的JSON文件中;生产环境提供来自数据库的配置数据;staging/QA环境可以将这两个源用于配置的不同部分。
当然,问题并不局限于qoxdoo。我认为这对于任何可能需要部署特定定制的独立JavaScript应用程序来说都是热门话题。
使用以下方法来解决这两个问题(警告和顶级对象):
a。在index.html中,然后加载应用程序的JS:
window.qx = { $$environment: {
"myapp.key1": "foo"
} };
b。稍后在Qooxdoo应用程序中
var key1 = qx.core.Environment.get("myapp.key1");
对于预定义的环境,我建议使用正常的Qooxdoo配置,而不是提供的hack@geonik。以下摘录自正常config.json
:
"config-warnings" :
{
"job-shadowing" : ["common", "source-script", "build-script"]
},
"jobs" :
{
"common" :
{
"environment" :
{
"appname.version" : "1.0.0",
"appname.timeout" : 30000,
"appname.analyticsId" : "UA..."
}
},
"source-script" :
{
"environment" :
{
"appname.serviceUrl" : "http://127.0.0.1:8080/service",
"appname.crossDomain" : true
}
},
"build-script" :
{
"environment" :
{
"appname.serviceUrl" : "/service",
"appname.crossDomain" : false
}
}
}
通过以上设置,您可以在开发构建中进行一个设置,在生产构建中进行其他设置。您可以添加更多的环境,如QA,以及其他所需的设置。然后使用正常的qx.core.Environment.get
访问它们。
我不建议将运行时设置与Qooxdoo配置混合使用,后者本质上是静态的。只要在应用程序上加载它们,就可以从类中的任何qx.io.*
方式和句柄开始。
相关文章:
- 链接两个网页或网络应用程序的最佳方式
- 在企业应用程序框架中包含js/css文件的最佳实践是什么
- 在变量中保存值的最佳方法是在应用程序关闭后使用,然后使用apachecordova在android中重新启动
- 展示纯js应用程序前端的最佳架构是什么
- 应用程序的最佳目录结构 - 节点 + 道场:这行得通吗?
- 用于组织大型javascript应用程序的工具和最佳实践
- 在angular js中,每次应用程序进入状态时,重新加载状态的最佳方式是什么
- 将配置传递到qoxdoo应用程序的最佳实践
- 使用AngularJS应用程序为移动设备(iOS、Android等)构建本地应用程序的最佳方式
- 在同构的React web应用程序中,选择服务器渲染的最佳方式是什么
- AngularJS组件和cms驱动应用程序的最佳实践
- 在单页应用程序 (SPA) 中处理身份验证的最佳方法
- 让Laravel应用程序同时服务于基于浏览器的应用程序,并充当iPhone和Android应用程序的API的最佳实践是什
- 将复杂内容(想想整个网页树)从一个 Web 应用程序提供给另一个网站的最佳可重用解决方案是什么?
- 在应用程序框架中处理异步 Javascript 代码的最佳实践
- 我的原生脚本应用程序的最佳结构
- 什么是Java EE Web应用程序中图表和图形的最佳API和工具
- 将内容加载到应用程序中的最佳方式
- Web应用程序:为数据库开发界面的最佳技术
- 缩小Javascript代码和css代码的最佳应用程序