如何使用Cordova

时间:2015-05-01 19:18:13

标签: android cordova backbone.js

我有一个使用Cordova,Crosswalk,Backbone,Require和React的混合应用程序,但这个问题的主要组成部分只是Cordova和Backbone,特别是Backbone.history。我正在使用AMD加载。

使用骨干网在网络上导航是完美无缺的,但在移动设备上有一些非常奇怪的问题会发生。

如果我没有正确配置,那么在运行Backbone.history.start()

后尝试加载文件时应用程序就会崩溃

这是我当前的开始配置:

Backbone.history.start({silent:false, pushState: true, hashChange: false, root: isMobile.any ? "android_asset/www/" : ""});

(将root设置为' android_assets / www'是必需的,否则主干将要求在根级别查找文件,这是我在这里遇到的另一个问题)

在我目前的配置中,我确实让应用程序在技术上有效,但有三个主要问题:

1)如果我重新加载,所有加载的.js文件现在都被视为mime type plain / text,我在控制台中看到了这个警告。这不会破坏任何东西,但警告很烦人。这种情况不会发生在第一次加载时,只有在我重新加载后才开始生成骨干历史记录。

2)当加载初始路由时,Backbone在移动设备上寻找与桌面上完全不同的页面:两者上的哈希值相同(""),但片段更改为&#39 ;的index.html'在移动版中。为了弥补这一点,我不得不添加' index.html'进入我的路由器的路线,这是一个完整的黑客IMO。

桌面:

What is root? /
What is hash? 
What is fragment? 

移动:

What is root? /android_asset/www/
What is hash? 
What is fragment? index.html

3)如果我在移动应用程序中导航到自定义路线,然后使用chrome调试器远程连接并强制刷新页面,应用程序将会死亡,因为它无法找到FILE,而不是路径,以及它死了。示例消息:

Application Error:

The file or directory could not be found. 
(file:///android_asset/www/showGame)

在我的项目中没有正确使用Backbone.history,这是非常明显的。问题是cordova需要相对的URL,而Backbone在解析url根字符串,散列,片段方面做了很多工作,并且不能构建在仅相对域中工作。令人难以置信的是,这在使用时破坏了一切是多么糟糕。这里有没有人有任何经验或建议正确配置?提前谢谢。

更新:

如果我将backbone.history.start中的选项更改为不使用pushState,那么在视图页面上重新加载应用程序就可以了。这个问题解决了。

pushState: false, hashChange: false

我仍然收到警告,但我的片段的痕迹看起来更好:

移动:

What is root? /android_asset/www/
What is hash? 
What is fragment? 

我仍然感到困惑,为什么我需要将root设置为此路径,如果相对路径在Backbone.history中正常工作并导航,我更喜欢它。如果有更多我可以做的更好地解决这个问题?

0 个答案:

没有答案