如何在file:/// protocol(Cordova / Phonegap)下使用dojo的自定义构建

时间:2014-05-25 15:41:58

标签: cordova dojo requirejs file-uri dojo-build

我使用dojo框架开发了一个Web应用程序。此应用必须由浏览器使用file:/// protocol加载(它将成为Android / iPad的Cordova / Phonegap应用程序)。 index.html文件如下所示:

主管部分

<script type="text/javascript">
    var dojoConfig =  {
        parseOnLoad: true
    }
</script>

<script type="text/javascript" src=""dojo.js"/>

<script type="text/javascript">
  dojo.require("dojox.mobile.parser");
  dojo.require("dojox.mobile");
</script>

正文部分:

<script type="text/javascript">
    dojo.require("dojox.mobile.parser");
    dojo.require("dojox.mobile");
</script>

摘自IBM课程(Mobile application development, Part 1: PhoneGap and Dojo Mobile on Android

所以有两个问题:

1)dojo尝试加载模块但未能使用file:///协议进行加载。 HTTP协议是必需的。

2)在index.html中,我使用Web构建器制作的dojo自定义构建。这个版本由一个包含我需要的模块的文件组成。但是,必须要求这些模块使框架尝试从未存在的文件中加载它们,尽管它们已经加载到大型自定义dojo.js中

可能有人知道如何解决这两个问题。

2 个答案:

答案 0 :(得分:0)

您在哪个浏览器上测试代码? 由于安全问题,Chrome不允许在单个Html文件中包含多个域。 在firefox浏览器上尝试你的代码,它应该提示警告并运行代码。 还要确保index.html文件位于dojo源(dojo库)的父目录中。即

您的目录结构应如下所示 | - [dojo_source / dojo_library]
 |
 |。-index.html

还可以在浏览器中使用文件协议运行代码 文件://

希望这有帮助。

另一种方法是安装Web服务器。你可以试试&#34; mongoose&#34;网络服务器,非常轻,只有136KB的大小。然后,您可以设置它来运行您的道场代码。我一直在使用Web服务器,它非常适合对我的代码进行单元测试。

答案 1 :(得分:0)

你根本无法通过文件协议使用dojo,因为AMD引擎通过XHR请求延迟加载依赖项,这将无法正常工作。

请参阅:http://www.sitepen.com/blog/2014/07/30/dojo-faq-why-do-i-need-to-use-an-http-server-with-dojo/

考虑简单地使用节点js webserver进行开发并在手机应用程序中嵌入小型Web服务。

由于兼容性问题,您仍然可以尝试通过过时但仍然可用的接口dojo.someModule访问模块,因为模块是在全局命名空间中定义的。但是我不确定这是否运作良好。

您还可以尝试在dojo配置中将async设置为false。