3

有没有人知道如何在不安装 Web 服务器(如 LAMP/XAMP)的情况下运行 sencha touch 2 应用程序。(PS:我是 Sencha Touch 的新手)

我知道有一种方法 - 在 Sencha Touch 2 应用程序的 app.json 中包含phonegap 的javascript 文件。看起来像这样

"js":
    {
        "path": "cordova-2.5.0.js"  
    }

在此之后,示例应用程序在没有 Web 服务器的浏览器上运行。

  1. 还有其他方法吗?

  2. 添加 phonegap js 文件如何帮助在没有 Web 服务器的情况下运行 sencha touch 应用程序?

4

1 回答 1

3

使用标志启动 chrome--allow-file-access-from-files --disable-web-security也可以解决问题。

Sencha 需要 Web 服务器,因为如果应用程序microloader在 sencha 中处于开发模式,则Ajax请求app.json文件并从中加载其他文件。你可以看到这个

../sencha-sdk/mircroloader/development.js

带有以下代码的文件 -

var xhr = new XMLHttpRequest();
xhr.open('GET', 'app.json', false);

当您使用上述标志启动 chrome 时,即使使用file://....url 方案打开文件,chrome 也允许发出 ajax 请求。

当您在使用 sencha cmd 压缩 js/css 后部署应用程序时,所有文件都打包成一个文件。在这种情况下,您不再需要网络服务器。


更新

来自白名单域的 Cordova 文档

Apache Cordova 中的域白名单是一种安全模型,用于控制对外部域的访问,例如http://google.com。默认安全策略是阻止所有网络访问。然后,应用程序开发人员可以声明对特定网络域和子域的访问。

Widget Access 规范中,该元素用于声明对特定网络域的访问。将来,Apache Cordova 会将平台白名单实现抽象为 W3C Widget Access 规范。但是,目前每个平台都必须实施自己的域白名单。

此外,W3C Widget Access不包含安全和用户代理强制策略。它在XMLHTTPRequest中定义。

因此,Cordova 的基本功能是在策略中添加一个例外,以允许访问具有白名单域的应用程序域之外的某些网络资源。

于 2013-05-06T18:15:18.820 回答