在flex air应用程序中处理开发/生产URL的简便方法?我想指向我的本地测试框,但是当我启动时,我希望它自动指向生产URL。
答案 0 :(得分:0)
我建议使用配置文件或更改主机文件,将域指向开发计算机上的localhost或dev服务器。使用后一种选项,您始终在代码中使用生产URL,但您的开发机器会将这些域解析为本地计算机,因为它首先检查hosts文件。
答案 1 :(得分:0)
您可以在编译器选项中使用命名空间并配置当前命名空间(DEV / RELEASE)。
CONFIG::release
public function connect()
{
//connect to release url
}
CONFIG::dev
public function connect()
{
//connect to dev url
}
然后为编译器定义这些选项:
-define=CONFIG::release,false
-define=CONFIG::dev,true
答案 2 :(得分:0)
此处最好的方法是将此信息外部化为配置文件(可能是XML文件),该文件通过相对URL加载。配置文件可能看起来像这样:
<config>
<serviceEndpoint>http://www.mydomain.com/services</serviceEndpoint>
</config>
确保使用有效的ActionScript变量名称命名XML元素,否则使用该文件可能会遇到一些困难(例如,E4X表达式可能会变得困难。
然后,您可以使用HTTPService加载“config.xml”,它在部署时与应用程序的SWF一起放置。这将允许您将托管在任何域上的SWF重新指定到其他任何位置托管的后端。如果您在本地开发并连接到共享开发服务器,这将非常有用。
将此信息编译到您的SWF中是非常不灵活的,也是一种糟糕的做法。
答案 3 :(得分:0)
我通常会在应用程序(Flex - http://livedocs.adobe.com/flex/201/langref/mx/core/Application.html#url)或根显示对象(Flash - http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/display/LoaderInfo.html#url)中查看url
对象中的contentLoaderInfo
。如果网址以“file”开头,您知道自己在开发/ IDE中,如果它是“http”,则它在浏览器中运行。如果您只是在浏览器中工作,您也可以将参数传递给具有类似
{
url: $_SERVER['SERVER_NAME'];
}
并执行一些init / startup方法,根据应用程序运行的路径进行切换。
答案 4 :(得分:0)
我在我写的AIR应用程序中遇到了这个问题,它通过WebORB点击Rails应用程序。
我只需要在http://localhost和http://fakeproductionurl.com之间切换,具体取决于我是否在Flex Builder中运行(通过adl)。
这是我最终使用的:
if (NativeApplication.nativeApplication.publisherID != "") {
return "http://fakeproductionurl.com";
}
else {
return "http://localhost";
}
它不能让您在3种以上的不同环境之间切换,但它是在开发/生产环境之间切换的一种非常简单的方法。