Blog Logo

Appframework

写于2016-02-17 04:38 阅读耗时10分钟 阅读量


本章主要内容: 为什么使用UI框架 框架选择 什么是appframework

为什么要使用UI框架

利用Cordova开发App,为了提高性能,一般都是利用单页面应用程序(SPA)架构,原因前面已经说过。 通常一个比较好的UI框架会提供对SPA程序的强大支持,会提供以下功能: 1.通用的函数库; 2.强大的页面路由管理功能; 3.常用的UI组件; 4.带"下拉刷新"和"无限滚动加载功能"的滚动插件; 5.通用的触摸手势; 6.对于不同的系统,系统不同版本的webview的bug修正(这个通常是最令人头疼的事情); 7.不同系统的主题切换和其他一些功能

如果这些功能你都自己实现将会花费大量时间,尤其是你项目比较紧张的时候,可能根本没有时间去做这些东西。 另外如果你的前端经验不足,那么最好先学习使用一个现成的优秀框架,研习它的代码,这样才可能自己写出更好的框架出来。 你可以重复造轮子,但是要用自己的时间来造出一个更好的轮子来,在优秀框架的基础上面,你才可能造出一个更好的框架出来。


框架选择

从Cordova(最初的名字是PhoneGap,现在PhoneGap是Adobe旗下的一个商业版本的Cordova品牌,增加了在线打包等服务。)诞生以后,各种为编写手机应用(包括Web App和Hybrid App)的JS、CSS、HTML前端框架层出不穷。从老牌的jquery mobile、sencha touch到后来的apframework、ionic等等。 几乎各家都号称自己的UI框架是性能最好的,最优雅的。然而你只有把每个框架都研究一下,找他们的实际demo(注意app复杂度要类似,最好一样)体验一下,你才知道该选哪个框架。 "一起玩吧App"最初选型的标准是简单、快速,并且体验了各家的demo之后最后做出了选择appframework的决定,原因有以下几点: 1.appframework核心函数库(主要用来选择操作dom用的)JQuery的模仿子集,对于熟悉JQuery的人来说极容易上手。 2.appframework UI框架很小,整个加起来(包括主要的插件但包括仿JQuery核心函数库)六千行代码左右,意味着出问题你可以阅读代码,自己修改。 3.速度快、IOS支持原生滚动(虽然有bug,"一起玩吧App"中已经修复),体验上比号称最快的ionic还要快(ionic目前在IOS上面还不支持原生滚动)。


什么是appframework

appframework UI框架是一个轻量级、高性能、跨平台的、极易上手的跨平台UI移动开发框架。配合Cordova开发出性能相当不错的手机App,支持Android、IOS、Windows Phone等手机平台。appframework的前身是jQmobi,后来被intel收购,现在由intel维护、开发、推广。 这是Appframework在开源Github上的链接:https://github.com/01org/appframework

appframework主要由两个部分组成: 一是仿JQuery精简函数库: 该函数库去除了JQuery对传统浏览器的支持,包含有极快速的查询选择库。所以有更好的查询,修改dom性能,总共大约70来个API,对熟悉JQuery的来说上手非常容易。 二是提供了一个跨平台的UI开发框架库 该UI框架对开发SPA(即单页应用程序:指的是多个业务页面(在appframework中叫做panel)其实是跑在了一个html页面)提供了强大支持。该UI库提供了页面路由功能,页面传参功能,页面分开加载功能,不同平台切换不同主题,常见元素(表单、按钮)组件。 另外通过插件机制提供了其他许多功能:如touchLayer插件提供了一个虚拟的touch层消除了点击事件的300ms延迟bug,同上还消除了Android上面的许多bug,滚动插件为你的app提供了出色的滚动性能,手势插件提供了常见的各种触摸手势事件。


一起玩吧App中的appframework

OK,上面我们说了appframework这个框架比其他框架简单、易学、性能好。 然而你会很快发现和市场上常用的框架一样Intel原版的框架实际上也存在诸多的问题,在以后的章节中会一一讲解给大家。Intel芯片是做的好,但是这个框架搞得实在是不得不让人对它吐糟。它们号称是跨平台,而实际上它们所做的实际工作大多数是真对IOS的,让开发Android的人心真是碎一地。 但是要声明一点,这不是appframework的错,现在红的发紫,大家趋之若鹜的ionic坑那也是遍地都是,我到现在都没有见过谁用ionic开发出来的app没有显而易见bug的,开发出来的app在六百块的Android手机上面明显卡顿。这其实不是ionic的错,不信你用原版appframework写一个和它们一样复杂度的app,估计你也不比他们好多少。但是你用深度优化过的一起玩吧里的appframework,以及后面讲到的"一起玩吧App"里面使用的各种优化技巧就会明显感觉好很多。 OK,写到这儿你可能会说,那你干嘛用appframework?不用ionic,因为appframework简单,极易上手,整个框架所有JS代码加起来勉强1W行。这意味着有bug,你可以较容易去修改它的框架,而不是到论坛里去等答案。Ionic比较大,花样概念多,IOS居然不支持原生滚动,坑也多,性能号称最好,其实还没有原版的appframework好,你可以找市面上的ionic app和appframework app对比一下就知道,加上学习曲线陡峭(如果你底子够好appframework顶多一天时间就可以开发了,ionic得要一个星期),那不如用个简单的多好。 一起玩吧App是用了appframework框架,但不是原版的appframework框架,是在2.1版本基础上深度优化和完善的框架,在开发一起玩吧App的过程中,这个appframework框架不断的爆出各种bug,所以一起玩吧appframework框架的完善和优化是由一起玩吧App驱动的。这里也劝各位一句,要选那种已有成熟的,性能令人满意的App发布出来的框架来开发你自己的App(没有令人满意的App驱使的移动开发框架都是耍流氓)!


为什么一起玩吧App用了2.1版本的,而没有用2.2版本或者是3.0版本的appframework?

是因为2.1版本和2.2版本没改几行代码,而3.0版本变化太大,废除了自己的JS函数库,滚动插件,touchLayer层(这些东西都要你自己去东拼西凑,那还不如用自己原来优化过的东西呢,感觉intel的路子走歪了),而这些是一起玩吧优化、完善的重要地方。优化过的appframework性能得到了很好的提升,修复了众多bug。 也许你觉得自己修改完善框架对你来说有点难度,但是这是一条通往高手的必经之路!使用Cordova开发App的最大挑战就是性能优化,UI做的再漂亮那也是设计和美工的功劳。天下武功无所不破,唯快不破,这是决定你是一流的Cordova程序员还是二流的Cordova程序员的最重要标志。

Headshot of Maxi Ferreira

怀着敬畏之心,做好每一件事。