简单的聊一聊我开发了4年之久的Hybrid App(混合模式移动应用)平台开发,目前一直在持续开发与维护,支持无编程快速开发!css
其本意也不是要吹捧前端有多么强大,只是用本身的实际项目阐述下对于前端开发一个更深层次的看法html
PS:这不是单一的APP应用,这是一个能够快速批量制做app的一套跨平台解决方案前端
由于我常常在家同步更新,因此在git上放了一份,并不是开源,仅参考学习,请勿乱传播,谢谢配合(固然,没有API,没有文档,估计ES6看起来也够呛)呵呵node
开始咱们先了解下目前前端的三个大的方向定位:webpack
传统的web开发就不提了,前端开发者都是从这个过程走过来的。随着移动端的迅猛发展,近几年前端这个职业也被抄的火热,移动web的兼容早期估计也是蛋碎了一批人了,我也是深受其害,还好电子产品更新换代的速度挺快的。因此不论是PC仍是移动端,web页面至始至终都是经过浏览器打开的,那么这样的开发来讲咱们仍是的能够笼统的定义为传统的web开发者css3
自从Iphone和Android这两个牛逼的手机操做系统发布以来,在互联网界今后就多了一个新的名词-Web App(意为基于WEB形式的应用程序)。咱们在iOS上开发APP,须要经过Objective-C那样精细复杂的语言去开发,这对广大的开发者而言是个不小的难题。值得庆幸的是,开发者们也能够经过开发Web APP来达到曲线救国的目的。也就是说,能够经过HTML、 CSS或者JavaScript来进行Web APP的开发。其实Web APP说白了就是一个针对Iphone、Android优化后的web站点,它使用的技术无非就是HTML或HTML五、CSS三、JavaScript,服务端技术JAVA、PHP、ASP,可是web APP的开发仍是有一个的根本问题,由于底层毕竟仍是html css js这些技术那么是没法操控跟系统相关的功能的,好比我想调节设备声音,我想调用本地的文件等等,那么这时候出了一个新的解决方案 - Hybrid App(混合模式移动应用)git
Hybird的典型表明就是PhoneGap开发框架,后来被土豪Adobe收购了,简单的说PhoneGap在支持web app开发的同时还能经过它的手段:相似原生语言同样调用其本身的系统接口,其实现也是很恶心的经过截取消息,你们能够百度查找相关资料es6
关于Web App与Native App的好坏这里不作讨论,存在即便道理,Hybrid的存在总有它的价值github
那么相比Native开发web App开发最大的优点:快速!web
布局多是最头疼的问题之一,移动设备的尺寸那真叫一个“丰富”,要兼容各类尺寸会搞的你焦头烂额的。在PC端咱们经常使用的手段就是固定布局、弹性布局。可是在移动端咱们可使用更新的技术,响应式布局媒体查询等等,可是根据我我的的经验:外部采用自适应布局模式,在不一样设备上能够自行缩放,中等布局能够采用em rem, 具体的图片能够采用px,可是在我项目中最终采用是计算缩放比,让全部的元素按照绝对尺寸进行缩放布局
说着说着就会离开话题很远了,那么web App的的缺点实际上是比较明显的,性能相对原生的的体验会差,至于差多少要看应用的具体设计了。好比我就作一个翻页的效果,这样来讲Native 与Hybrid是看不出区别的,可是若是是作一个植物打僵尸,这样对比就比较明显了,因此基于目前Hybird的发开仍是有很大的局限性的,我记得早2年淘宝的客户端就是基于web app开发的,有一段时间在安卓上的体验很是差
web App的开发快速便捷,可是性能比Native仍是差强人意,在系统接口的调用上也很薄弱,不论是web App仍是Native都不是什么新技术了,项目在选择开发的时候都会有各类考虑,究竟是短平快的快餐式发开,仍是高大上的原生编写,那么怎么才能平衡这些优劣,就要看各自项目的取舍了
那么问题来了,web App如何才能最恰到好处的利用起来?
若是咱们想经过一个产品引导一个产业我想目前是很难了,马云的时代不是每一个人都能抓住的。若是一个不行,那么十个百个千个呢?咱们作成一个系列产品造成的产业链?是否能够打通一个行业的缺口呢?这个未知,人生就是有了未知才会有精彩,正是由于这个未知才让咱们有了这个动力去追逐这个梦想。
一个应用开发的成本是很是大了,耗时耗力,稍微复杂点的应用都要牵涉到几个部门的协调,按照目前的的开发周期,我想一个成型的应用从设计开发到检测到上架,少说也要1个月吧,并且仍是一个团队合做以后的开发周期,基于这种开发成本考虑就算是经过web App开发的方式也不能达到产业链的效果。那么咱们就会萌生一种新的想法,可不能够不写代码就能作应用了?基于这样的设想咱们的项目的原型就出来了,基于PhoneGap的无编程快速应用开发
这是目前公司几个系列项目,都是基于无编程的实现,以前还有几个项目不过已经流产了,就不提了
这里3个方向的项目都是属于加壳,其实底层的东西都是同一个实现,只是在不一样的项目中被各类不一样的合理利用,以前我在慕课网上的介绍写到,我有几百个苹果App Store的应用展示,还真不是呵呵,确实是有(这个连接里面进去看看)。那么这些应用其实都是HTML5+CSS3+JS实现的,就是如今比较火热的Hybrid混合应用
什么是无编程?
如何实现无编程?
如何实现跨平台?
如何实现?
其实最重要的2个方向咱们已经肯定了,那么咱们怎么才能实现无编程快速应用开发?
ppt模版中多出了2个新的模块
读数据
根据数据处理,好比音频(自动适配最合适的方法)
由于我只是前端的实现,不涉及其余语言,只针对我我的的理解。
整个前端目前总代码应该是超过了10万行,业务架构方面的代码应该有3-5万行左右
SVN的更新记录就架构这一部分是超过了1万的更新量
你们关心的问题来了:这样的前端项目,设计与实现上会涉及多少问题了?
我简单说一句:真的复杂,由于把逻辑交给了用户了,用户给能够一个对象上增长多个任意的事件、动做、动画、音频等等组合,每一个组合之间还能够相互配合实现更多的动做动画
移动端的问题太多了,这么多年核心的架构重构了不下8次,我也累积了一堆的优化经验
咱们但是单页面模拟多页面切换的,因此WebView只有一个,那么传统的都是经过网页跳转切换,咱们只能经过左右滑动切换页面,那么意味着咱们要模拟出多个页面来,其实目前也有swipe这样的插件,可是针对咱们这样的模式swipe只能说是弱爆了。
其实问题还有不少,这里就不一一列出了,咱们经过phonegap打包的应用就有几百个App Store单页面应用系列,咱们还有本身的应用平台appone、读酷儿童图书馆,秒秒学 - 交互式软件培训 是基于这种模式开发的一种新的教学体验
针对这种大型的应用最重要的一个点,就是性能,咱们优化的原则就是二八定律,从最消耗的地方着手
分别有:
那么我总结的优化与结构组织的方式有:
固然还有不少不少设计上的优化这里就不一一列举了,项目最复杂的地方,我以为就是把逻辑彻底交给了编辑者了,那么我就须要在各类不一样的状况下根据数据分析出设计的的意图,并实现
可能有大部分人会看天书同样,不知所然,毕竟这个确实都是跟实际的项目经验有关系的,若是遇到了,能够参考
这个项目我架构这边的需求就不下200个,其实前端的架构水仍是很深的