我有一个javascript / html / css web“应用程序”,它利用D3可视化库来使用Bootstrap可视化文件系统,这在桌面/笔记本电脑上运行良好。
我现在需要将此应用程序移动到平板电脑,并且需要同时支持Windows 8和Android。但我真的很困惑最好的方法来做到这一点。
D3是基于javascript的,所以我不能为每个支持的操作系统制作本机应用程序。我应该通过每个SDK将代码转换为移动网络应用程序,还是使用其他方法(如Phonegap(或替代方案))来执行此操作?
如果我使用SDK,那么我需要处理不同版本的代码来更新任何更改,但我不确定Phonegap是否正在寻找,因为它似乎很难开始使用它。我只需要支持Windows 8和Android - 有更简单的方法吗?
最后,如果我使用Phonegap创建应用,我是否可以访问位于云中的数据库,或者这是不可能的?
答案 0 :(得分:0)
你真的不需要Phonegap。您可以构建仅包含填充整个屏幕的WebView的本机应用程序。 WebView将托管您的“Web应用程序”。 然后,(这是有趣的部分)你编写接口以访问本机对象。
在Android中,您将javascript界面编写为一个带有@JavascriptInterface
注释的公共方法的类。
class MyJsInterface{
@JavascriptInterface
public String doStuff() { return "hello" ; }
}
您可以使用addJavascriptInterface
方法在网络视图中注册javascript界面:
webView.addJavascriptInterface(new MyJsInterface(), "MyInterface");
您可以使用提供的名称作为上述方法的第二个参数(在本例中为MyInterface
)从javascript访问您的界面的方法:
var message = window.MyInterface.doStuff();
// message is 'hello'
返回字符串(JSON)的方法可以很好地与javascript一起使用。
详细了解Android WebView and javascript interfaces。
使用Windows,您可以使用以下方法实现类似功能:
window.external.notify
),它允许您将数据从javascript发送到C#并在控件上引发ScriptNotify
事件。好文章:Windows Phone 8 native and Javascript interop
MSDN链接:WebBrowser.ScriptNotify Event
不要忘记在网络视图上启用javascript。