4

我有一个基于 Twitter Bootstrap 的网站。通过一些额外的改进,它在手机和平​​板电脑上运行良好。但我想要一个真正的应用程序,并且不想复制所有内容。首先,仅适用于 Android。

我尝试的第一件事是 AppsGeyser,很简单,但不是我真正想要的。如果用户没有互联网连接,我会看到那些丑陋的浏览器消息。如果用户按下他手机上的菜单按钮,我想要来自 Twitter Bootstrap 的“菜单栏”的菜单切换。所以 AppsGeyser 不是我想要的。并且没有 iOS 支持。

接下来我用PhoneGap做了很多尝试,太棒了!我想要的一切都是可能的,但是最好的解决方案是什么?我想要的是以下我的意见:

  • 如果应用程序启动它会检查互联网连接,没有连接?从缓存加载。否则只显示网站。HTML5 缓存清单的最佳选择?玩过它,但如果没有互联网连接,我只想从缓存中加载。到目前为止,这似乎是不可能的..?
  • 如果要提交一些表格,再次检查是否有互联网连接,没有互联网连接?只是一个警告:“没有互联网连接!” 并且不要提交,所以表单仍然填写,就像用户刚刚做的那样。点击/提交 => 对网站的 ajax 调用 => 失败?=> 显示警报 => 返回 false,因此不会提交表单。最佳选择?
  • 我想要的最后一件事,就像我之前说过的那样,当用户按下手机上的菜单按钮时,它会从 Twitter Bootstrap 切换“菜单栏”。

所以我认为前两件事不是问题,但最后一件事......?我发现了这个:http ://docs.phonegap.com/en/1.0.0/phonegap_events_events.md.html#menubutton 如果网站在“应用程序中”,这没什么大不了的,但我不想要该网站“在应用程序中”。只需从互联网加载它(如果没有互联网连接,则缓存),所以如果我更改某些内容,我不必更改网站和应用程序。只是网站!但是是否可以在“远程”网站中使用 Cordova?如果该网站通过PhoneGap 运行该应用程序,它就会运行,并且可以工作!?

就像,如果我将此代码放在我的网站中:

document.addEventListener("menubutton", onMenuKeyDown, false);

function onMenuKeyDown() {
    alert('Menu button pressed!');
}

并包含cordova js文件,它对普通访问者没有任何作用,但是如果使用该应用程序并且该网站是从PhoneGap应用程序加载的,并且带有webview它可以工作吗?

请你对这一切的意见!

谢谢!

4

1 回答 1

4

对我来说,PhoneGap 中的教科书方法是将应用程序编写为一个独立的 JavaScript/HTML/CSS 应用程序,它可以位于设备上并从服务器端 Web 服务检索数据。这需要共同努力,并且通常对传统的服务器端 Web 应用程序(这似乎是您所描述的)进行逆向工程并不是特别容易。此模型为您提供出色的性能,让您无需发布更新即可更新应用程序内容。

我认为最好的办法是将应用程序的表示层重写为由后端派生的 API 驱动的 JavaScript 应用程序。这应该会为您提供非常出色的性能,如果您要与其他本地应用程序竞争,这一点很重要。另外,如果您正确构建它,它将为您提供离线功能和更多功能(缓存、日志记录等)。

快速的方法(但可能不是我推荐的方法)是只在设备上打包主页(HTML/JS/CSS),然后像往常一样链接到您的网络内容。这不是我以前使用过的方法,但应该可以很好地工作。如果您想构建离线功能,将这种方法与 jQuery Mobile 之类的工具包结合起来应该可以很好地工作(jQM 不会按 sae 提供离线功能,但应该为您提供合适的基础来构建自己的离线处理)。

我希望这有帮助!

于 2012-10-16T21:56:37.113 回答