PhoneGap 是只使用 UIWebVIew 还是做更多的事情?硝基?

Posted

技术标签:

【中文标题】PhoneGap 是只使用 UIWebVIew 还是做更多的事情?硝基?【英文标题】:Does PhoneGap use just UIWebVIew or is it doing something more then that? Nitro? 【发布时间】:2011-08-06 11:11:59 【问题描述】:

PhoneGap 是只使用 UIWebVIew 还是做更多的事情?

它可以利用 Apples Nitro VM 吗?

我目前正在探索将我们的 javascript 应用程序移植到本机的​​选择。我正在研究 PhoneGap 和 Titanium,试图弄清楚它们的不同之处。

感谢您的任何见解。

【问题讨论】:

【参考方案1】:

是的,PhoneGap 使用 UIWebView,但它是高度自定义的,其中包含许多注入页面的自定义 javascript。

不,因为它使用 UIWebView,因此无法使用 NITRO javascript 引擎。

编辑:Apple 更正了全屏网络应用程序错误,但他们没有为 UIWebViews 修复它,因为这会使普通应用程序将内存块标记为可执行(安全风险)。

【讨论】:

谢谢!您是否使用过 Titanium,它是否也在做同样的事情? @oolong 是的,我短暂地试用了 Titanium。没有 Titanium 没有使用 UIWebView,Titanium 甚至没有使用你给它的代码。它将您的 js 代码转换/编译成 Objective-C,然后让 Xcode 将该 Objective-C 编译成完全原生的 arm 代码。 @oolong 使用PhoneGap,您可以编写一个WebApp,它可以通过javascript 访问一些本机功能。使用 Titanium,您可以使用 javascript 而不是 obj-c 编写本机应用程序。 给我找一些相反的文档,但我没有发现应用程序中的 UIWebViews 使用 Nitro 的证据。 quora.com/ios-5/… @jamie 是的,抱歉,Apple 修复了全屏 Web 应用程序不使用它的错误。但是,他们无法为 UIWebViews 启用它,否则会造成很大的安全风险或将 Javascript 渲染拆分为单独的进程。【参考方案2】:

在 Titanium 中,应用程序代码是用核心 JavaScript 编写的,它会在使用语言桥编译时生成本机代码。所以钛是完全原生的。

PhoneGap 只不过是一个 UIWebView。

【讨论】:

【参考方案3】:

我也想知道。我没有发现任何证据表明在 UIWebView 中启用了 Nitro。有大量证据表明它在 4.3 中没有启用(它仅在 Safari 本身中)。有报道说它在 Safari 5.0 之外的其他应用程序中启用,但我找不到任何证据表明它在 UIWebView 中启用。

来自CNET 引用HN 讨论:

“还有一种方法可以在不使用 Safari 的 iOS 上创建 Web 应用程序 正确的,一个叫做 UIWebView 的接口。

这看起来并没有提高 Nitro 的安全性 涉及 Nitro 用于即时 (JIT) 编译的原因 即时创建更快的 JavaScript 软件版本。”

更多阅读:

http://daringfireball.net/2011/03/nitro_ios_43 http://www.quora.com/iOS-5/Did-UIWebView-in-iOS-5-get-the-Nitro-JavaScript-engine

【讨论】:

以上是关于PhoneGap 是只使用 UIWebVIew 还是做更多的事情?硝基?的主要内容,如果未能解决你的问题,请参考以下文章

关于如何将 APN 的设备令牌链接到注册用户的建议(通过 phonegap 或 UIWebView)

关于UIWebView的总结

从 uiwebview (iOs) 打印本地 html 文件

如何在 iOS 中使用 Phonegap 配置键盘?

PhoneGap 应用在后台播放视频(隐藏)

Phonegap 全屏 iPad 应用程序