我是一名网络开发者,我想把我的网络产品转移到iPhone上.其中一款产品类似于谷歌 map :在手机屏幕上显示 map ,你可以拖动或调整 map 大小,查看我们添加到 map 上的一些信息.

我知道有一些技术可以让你使用HTML、CSS和Javascript开发原生iPhone应用程序.我已经确定了一些:

还有其他类似的产品吗?它们之间有什么区别?我应该 Select 哪一个?

推荐答案

我注册Stackoverflow只是为了 comments 上面投票最多的答案.不好的是,Stackoverflow不允许新成员发表 comments .所以我必须让这个 comments 看起来更像是一个答案.

Rory Blyth的回答包含了关于这两个javascript移动框架的一些有效观点.然而,他的要点是错误的.事实上,钛合金和PhoneGap的相似之处大于不同之处.它们都通过一组javascript API公开手机功能,应用程序的逻辑(html、css、javascript)在原生WebView控件中运行.

  1. PhoneGap不仅仅是Web应用的原生包装器.通过PhoneGap javascript API,"web app"可以访问手机的地理定位、加速度计摄像头、通讯录、数据库、文件系统等功能.基本上,手机SDK提供的任何功能都可以与javascript世界"搭桥".另一方面,在移动Web浏览器上运行的普通Web应用程序无法访问这些功能中的大多数(安全是主要原因).因此,PhoneGap应用程序与其说是Web应用程序,不如说是移动应用程序.你当然可以使用PhoneGap来包装一个根本不使用任何PhoneGap API的web应用,但这不是创建PhoneGap的目的.

  2. Ti不会将您的html、css或javascript代码编译成"本机位".它们被打包为可执行包的资源,非常类似于嵌入式图像文件.当应用程序运行时,这些资源被加载到UIWebView控件中并在那里运行(当然是作为javascript,而不是本机位).不存在javascript到本机代码(或到Objective-c)编译器.在PhoneGap中也是这样做的.从架构的Angular 来看,这两个框架非常相似.

现在,他们有什么不同吗?对首先,通过将更多手机功能与javascript连接起来,Tianium似乎比PhoneGap功能更丰富.最值得注意的是,PhoneGap没有向javascript公开许多(如果有的话)本机UI组件.另一方面,Tianium有一个全面的UI API,可以在javascript中调用它来创建和控制各种本机UI控件.利用这些UI API,Tianium应用程序可以比PhoneGap应用程序看起来更"原生".其次,PhoneGap支持的移动电话平台比Tianium多.PhoneGap API更通用,可以在不同的平台上使用,如iPhone、Android、Blackberry、Symbian等.至少目前,Tianium主要针对iPhone和Android.它的一些API是特定于平台的(比如iPhone UI API).使用这些API将降低应用程序的跨平台能力.

因此,如果你关心的是让你的应用程序看起来更"原汁原味",钛是一个更好的 Select .如果你想把你的应用程序更容易地"移植"到另一个平台上,PhoneGap会更好.

Updated 8/13/2010: Link to a Titanium employee's answer to Mickey's question.

Updated 12/04/2010:个 我决定每年对这篇文章进行一次审查,以保持其信息的时效性.许多事情在一年内发生了变化,这使得最初帖子中的一些信息过时了.

最大的变化来自钛.今年早些时候,Appcelerator发布了Tianium 1.0,从架构的Angular 来看,它与以前的版本截然不同.在1.0中,UIWebView控件不再使用.相反,您可以为任何UI函数调用Tianium API.这种变化意味着两件事:

  1. 您的应用程序UI变得完全原生.你的应用程序中没有更多的web用户界面,因为原生的Titania API接管了你所有的用户界面需求.钛在"跨平台原生UI"前沿的开拓值得高度赞扬.它为喜欢原生UI外观但不喜欢官方编程语言的程序员提供了另一种 Select .

  2. 你将无法在应用程序中使用HTML或CSS,因为web视图已消失.(注意:您仍然可以使用钛合金创建web视图.但是,在web视图中,您可以利用的钛合金功能很少.)Titanium Q&A: What happened to HTML & CSS?

  3. 您将无法使用流行的JS库,比如假设存在DOM对象的JQuery.您继续使用JavaScript作为编码语言.但如果你作为一名网络程序员来到Tianium 1.0,这几乎是你可以利用的唯一一种网络技术.

Titanium video: What is new in Titanium 1.0.

现在,Tianium 1.0是否将JavaScript编译为"本机位"?没有.Appcelerator终于在这个开发者博客上澄清了这个问题:Titanium Guides Project: JS Environment.我们程序员比营销部门的人更真诚,不是吗?:-)

转到PhoneGap.关于PhoneGap,没有太多新的东西可以说.我的看法是,在IBM今年晚些时候加入之前,PhoneGap的开发并不是非常活跃.有些人甚至认为IBM为PhoneGap贡献的代码比Nitobi多.不管是真是假,知道PhoneGap正在被积极开发是件好事.

PhoneGap继续基于web技术,即HTML、CSS和JavaScript.PhoneGap似乎没有任何计划像Tianium那样将本机UI功能与JavaScript连接起来.虽然Web UI在性能和本机外观上仍然落后于本机UI,但这种差距正在迅速缩小.web技术有两种趋势可以确保在性能方面为移动web UI提供明亮的功能:

  1. JavaScript引擎从解释器移动到虚拟机.JavaScript被JIT编译成本机代码,以便更快地执行.Safari JS engine: SquirrelFish Extreme

  2. 网页呈现从依赖CPU转向使用GPU加速.在硬件加速的帮助下,页面转换和3D动画等图形密集型任务变得更加流畅.GPU Accelerated Compositing in Chrome

这些源自桌面浏览器的改进正在迅速交付给移动浏览器.事实上,从iOS3.2和android2.0开始,移动web视图控件的性能和HTML5友好性都大大提高.移动网络的future 是如此充满希望,以至于它已经吸引了一个大子元素进城:JQuery has recently announced its mobile web framework. JQuery Mobile提供UI小工具,PhoneGap提供手机功能,在我看来,这两者结合在一起创造了一个完美的移动网络平台.

我还应该提到Sencha Touch作为另一个移动web UI小工具框架.Sencha Touch 1.0版最近在包括GPLv3的双重许可模式下发布.与JQuery Mobile一样,Sencha Touch在PhoneGap上也能很好地工作.

如果你是一个GWT级的程序员(像我一样),你可能想看看GWT Mobile,这是一个用GWT创建移动Web应用的开源项目.它包括一个PhoneGap GWT包装器,支持在GWT中使用PhoneGap.

Html相关问答推荐

R中的动态Webscraping

CSS:显示块,第一个项目没有正确对齐

创建具有圆锥渐变的水平CSS聚光灯

如何才能只给没有孟加拉语Kar符号的字母上色?

在css嵌套 Select 器中,尾随的`&;‘是什么意思?

调整一组IMG的大小以适应容器DIV

Div中的图像问题-(TailWind CSS中的网格)

如何突破安莉得分

如何在R中渲染Quarto文档时动态设置html文件名

为什么我得不到有错误的字段?迈克尔·哈特尔教程.7.3.3

在span中添加

带圆角帽的 CSS 部分边框

CSS Grid 布局:1 大图和 3 小图

如何使容器的大小适合其 position:absolute; 子元素的大小

如何消除线性渐变线的模糊?

涉及短代码时如何在页面上定位元素?

辅助功能:alt 或 alt="" 用于装饰图像

变换元素以适应高度(Angular,SCSS)

HTML 标记未在页面上展开

绝对定位的 div 与另一个静态定位的 div 的边距顶部一起移动