【51CTO译文】近来关于新的移动网页框架及移动平台存在不少争论。平心而论,这些工具在条款内容方面的混乱与模糊也是造成大家误解的原因之一。我希望通过几条简短的评述来尽量清理这种认识层面上的混乱状态。

网页移动应用程序并不等同于本地移动应用程序

许多人认为Titanium及PhoneGap与Sencha Touch及jQuery Mobile属于竞争对手关系。事实上它们并不是同一类事物。我敢肯定在抛出自己的观点后,一定会有人对我进行驳斥。不过网页移动应用程序更应该被看作一类网站,正如Basecamphq.com或是Twitter.com那样。一款网页移动应用程序运行于浏览器之上,而且其所调用的资源几乎都是远程的、存储于服务器端的。当然不排除有些信息也会出现本地存储的情况,但归根结底,它的本质是网站应用程序。

本地应用程序运行于我们的设备上,其全部资源都安装在我们的本地设备中。本地应用程序使用该设备的平台、语言以及特殊的本地API以与设备接驳。比方说我们无法在网页移动应用程序中运行NSString,因为只有本地应用程序才能访问本地资源,而网页移动应用程序做不到这一点。

“那么它们之间到底有什么区别呢?”区别如下: Sencha Touch 与 jQuery Mobile 

它们具备网页移动框架。我们可以使用这些技术以创建基于网页的移动应用程序。它们无法访问任何本地API。它们二者的运行都基于JavaScript。并且尽管它们是以完全独立的方式处理类似的问题,但其仍然具有共同点,即它们为移动页面服务。

大家可以在PhoneGap及Titanium上使用Sencha Touch与jQuery Mobile。如果我们能够接受将html/js作为自己的本地应用程序,还可以将PhoneGap或Titanium嵌入浏览器中并将其放在应用程序在线商店或市场中。我想这可能正是误解的根源。将Sencha Touch或jQuery Mobile进行本地化包装并不能使其成为真正的本地应用程序。该过程只是使其在外观上像是本地应用程序而已。我们可能从PhoneGap或Titanium中的API上获得过一些功能,但这仍然不一定可以被称为“本地”应用程序。它们充其量只能看作是运行在本地设备上的网页应用程序。这种将网页技术引入本地化领域的应用技术相当了不起。 PhoneGap 与 Titanium  PhoneGap及Titanium与Sencha Touch及jQuery Mobile之间并没有太多相似之处。事实上,我可以说得直白一些——PhoneGap与Titanium之间也并不完全相似。当然它们二者都允许大家自由分配本地或类本地型应用程序。它们也都不需要为Sencha Touch或jQuery Mobile准备额外的“创建支持”。为什么?因为它们所支持的设备自带浏览器。请记住,Sencha Touch与jQuery Mobile是运行在浏览器上的。因为PhoneGap及Titanium都允许我们在特定设备的浏览器中运行程序,所以它们其实是通过这种方式实现了对Sencha Touch及jQuery Mobile的支持。

PhoneGap与Titanium之间最大的不同在于它们所提供的功能。PhoneGap的服务内容更像是一种依附于浏览器的外壳,它表现得近似于本地应用程序,但本质上却是html/JavaScript应用程序。Titanium则通过“页面预览”实现了完全相同的功能,但却更进一步,为Cocoa Touch在浏览器之外提供了大量的本地API。根据我的观察,这两款应用程序在在线商店中有95%都并不是基于网页运行的。

在Titanium上我们通过JavaScript进行编码、利用Titanium自身提供的独特API。最终的结果是,应用程序在运行当中占用的是本机性能以及本地用户界面等等。概括来说:我们用JavaScript编码,而其实际运行却基于Objective-C(这里指的是iOS类应用程序)。 我仍然对“彻底终止本地应用”所获得的赞扬之声持怀疑态度。在为浏览器及设备分别制作过应用程序之后,我认为将二者相结合才是正确的选择,且极具发展空间。了解了各种技术之间的差异,我想这对于搞清各类工具的本质应该有所助益。

解读四大移动web应用开发框架真相的更多相关文章

  1. Python 四大主流 Web 编程框架

    Python 四大主流 Web 编程框架 目前Python的网络编程框架已经多达几十个,逐个学习它们显然不现实.但这些框架在系统架构和运行环境中有很多共通之处,本文带领读者学习基于Python网络框架 ...

  2. 高效 Java Web 应用开发框架 JessMA v3.2.2 正式发布

    JessMA(原名:Portal-Basic)是由 JessMA Open Source 开发的一套高效 Java Full-Stack Web 应用开发框架,内置可扩展的 MVC Web 基础架构和 ...

  3. Bootstrap非常简单实用的web前端开发框架

    今天无意间用firebug看网站的代码发现了Bootstrap,之前从来没有听说过这个东东,于是对它产生了好奇感,通过百度我了解到了Bootstrap是一款非常简单,强悍,实用,移动设备端优先使用的这 ...

  4. Rest风格WEB服务(Rest Style Web Service)的真相

    http://blog.csdn.net/jia20003/article/details/8365585 Rest风格WEB服务(Rest Style Web Service)的真相 分类: J2E ...

  5. Struts 2.x仍然明显落后于时代。 Struts 2.x这一类老牌Web MVC开发框架仅能用于开发瘦客户端应用,无法用来开发对于交互体验要求更高的应用。

    后来我在工作中陆续使用过Struts 1.x和Struts 2.x.我曾经把一个开源的基于Struts 1.x的自助式广告联盟应用移植到Spring MVC,还基于Struts 2.x做过网站开发.S ...

  6. Oracle免费的便捷Web应用开发框架

    Oracle免费的便捷Web应用开发框架 APEX 总体来说,APEX是我见过最便捷最高效的开发框架,用起来比PHP还舒服.上手简单,学习成本极低,曾经有个做行政的小女生,在我指导下两天就可以开发出简 ...

  7. windows下如何快速搭建web.py开发框架

    在windows下如何快速搭建web.py开发框架 用Python进行web开发的话有很多框架供选择,比如最出名的Django,tornado等,除了这些框架之外,有一个轻量级的框架使用起来也是非常方 ...

  8. KoaHub.js是基于 Koa.js 平台的 Node.js web 快速开发框架

    koahubjs KoaHub.js -- 基于 Koa.js 平台的 Node.js web 快速开发框架.可以直接在项目里使用 ES6/7(Generator Function, Class, A ...

  9. 基于 Koa.js 平台的 Node.js web 快速开发框架KoaHub.js demo 可安装

    KoaHub.js demo KoaHub.js KoaHub.js -- 基于 Koa.js 平台的 Node.js web 快速开发框架.可以直接在项目里使用 ES6/7(Generator Fu ...

随机推荐

  1. Spring 声明式事务,propagation属性列表及isolation(隔离级别)

    Spring 声明式事务,propagation属性列表 TransactionDefinition接口中定义,共有7种选项可用: PROPAGATION_REQUIRED:支持当前事务,如果当前没有 ...

  2. replace()替换文字

    var test = text.innerHTML; b = test.replace(/任晓强/g,"你好"); console.log(b); html: <div id ...

  3. jquery下拉列表选中项改变时获取新选项的属性值

    $("#textSel").change(funtion(){ var selVal=$(this).val(); var selText=$("#textSel opt ...

  4. 如何提高多线程程序的cpu利用率

    正如大家所知道的那样,多核多cpu越来越普遍了,而且编写多线程程序也是件很简单的事情.在Windows下面,调用CreateThread函数一次就能够以你想要的函数地址新建一个子线程运行.然后,事情确 ...

  5. C++中cin、cin.get()、cin.getline()、getline()、gets()等函数的用法

    学C++的时候,这几个输入函数弄的有点迷糊:这里做个小结,为了自己复习,也希望对后来者能有所帮助,如果有差错的地方还请各位多多指教(本文所有程序均通过VC 6.0运行) 1.cin 2.cin.get ...

  6. 1989-C. 数字三角形

    描述 如图所示,是一个数字搭成的三角形. 若起始位置在三角形的顶端,结束位置在三角形底边,每一步只能向下方或向右下角移动一格.请编程计算一条路径,使得路径上经过的数字和最大.(图中路径7→3→8→7→ ...

  7. mvc学习

    视频: http://edu.51cto.com/index.php?do=lession&id=14581 博客: http://www.cnblogs.com/chsword/archiv ...

  8. VO,DTO,DO,PO的划分

    实体类(VO,DTO,DO)的划分   经常会接触到VO,DO,DTO的概念,本文从领域建模中的实体划分和项目中的实际应用情况两个角度,对这几个概念进行简析. 得出的主要结论是:在项目应用中,VO对应 ...

  9. 如何用DELPHI编程修改外部EXE文件的版本信

    右击里面有修改 点开直接修改就可以了吧. DELPHI 里程序的版本信息怎么是灰色的,无法更改 耐心读以下说明,应该能解决你的问题,如果不能解决,请Hi我~ 如何给自己的dll文件添加版本信息呢? 首 ...

  10. Frequent values && Ping pong

    Frequent values 题意是不同颜色区间首尾相接,询问一个区间内同色区间的最长长度. 网上流行的做法,包括翻出来之前POJ的代码也是RMQ做法,对于序列上的每个数,记录该数向左和向右延续的最 ...