传统的移动开发模式主要分为三种,Native App,Web App 和 Hybrid App,对于目前微信端比较火爆的开发平台小程序,或者其他厂商推广的流应用、轻应用等开发方式,基本都离不开H5的支撑。目前App前端开发主流框架RN,Ionic,Vue都发展得不错。但是业务需求的快速发展,有些框架并不能够满足他们的需求,在不同的业务场景,受诸多约束因素的影响,研发团队应该如何在前端框架上做好选型?
根据目前51CTO社群(群号312724475)中大部分移动开发领域的开发者实际项目经验,我们邀请到他们帮助大家在App前端框架的选取以及技术选型上指点迷津。
App开发工具和种类
云计算-恩威-成都:WeX5和Apicloud这个就不错,快速交付APP应用。
传统App开发模式主要有三种:Native App,Web App 和 Hybrid App,现在多了一类,基于平台的App小应用——微信小程序。
原生App ——直接被安装到设备里,移动Web App——一般说来移动Web App都是都是需要用到网络的(通常做法基于手机浏览器)。混合App——虽然看上去是一个Native App,但只有一个UI WebView,里面访问的是一个Web App (例如百度糯米、京东客户端等),基于平台的Ap小应用——例如大家所熟悉的微信小程序等。现在App H5和React Vue用的多,个人习惯不同,客户没有要求的话,用这个不到半个月就可以交付。一张图说明React Native如何让JS和OC交互。
React Native如何让JS和OC交互
Android-arige-北京:关于App的原生和Web实现的争论,一直就没有停过。不过现在大家现在已经基本达成共识,几乎不变的核心内容用原生,稳定、高效,对于试错功能和经常改变的内容用Web。还有一点就是,在国内的环境下,做Android的,都非常的不矜持,各种黑科技乱搞,相较于海外市场,出海的产品就会矜持很多。国外的广告做的矜持,有底线,国内的就有点夸张了,想Facebook和AdMob之类的大公司,会要求开发者必须明确标志出是广告,不然就停了这个开发者的广告,国内就不会。
移动端混合开发框架比较主流的有哪些?
App-zee-重庆:混合现在RN,Ionic,Vue都发展得不错,对于App开发主流使用的框架,个人觉得还是主要看自己项目的需求,以及研发团队情况而定。之前我们一直用Ionic1(基于AngularJS1的),但是后面出了Ionic2+(基于AngularJS+),不兼容1了。而且Ionic是开发主要针对于整体框架部分都是H5部分构成,所以写出来的JS有点大。现在选用了Vue,来避免这个问题(因为我们主要框架是基于自己写的Native部分),RN和Ionic2+的学习曲线也较陡, 需要会部分Native技术才能玩好。
App开发技术选取
PHP-Coeus-安徽:移动端OC/Swift/Android;服务端Java/PHP;数据库用Mysql/ NoSQL;缓存Redis/MemCache
半吊子全栈工匠-曹老师-北京:大家说App 的开发, 适合的就是最好的技术,那什么是适合业务的呢?如果说具体问题具体分析, 我们实际上需要 一些基本的准则, 以便在技术选型的时候,不至于盲目。大家觉得在什么情况下,使用怎样的App开发技术最好呢?
51CTO-小官-运营:对于接外包的项目来说,要开发周期短的选个混合开发环境就好,技术也相对容易些,HTML5+CSS3+JavaScript技术就能快速集成App,混合开发环境对于初级技术人就可以上手,有个官方文档差不多就够了。
Java-孙磊-北京:目前项目就是使用混合开发模式,开发手机银行App。开发工具用的HBuilder,H5+CSS3+Vue.js。之所以选择Vue感觉它简洁点吧。
App的技术选型取决于你最重要的关注点是什么
半吊子全栈工匠-曹老师-北京:性能、安全、易用、数据一致性性、健壮性..... 诸多因素,都是我们做App的考虑约束,这些约束有的是一致的,有的是矛盾的,App的技术选型取决于你最重要的关注点是什么,当然了,功能性是默认的,一般的都可以实现的,如我现在做的企业应用, 安全性是第一位,稳定性是第二位,性能排在第三,其他优先级更低。那么如果提高安全性呢, 所有请求都是HTTPS 这是默认的,内容本身的安全, App的反破解,本地数据的加密,我原来做的一个学生应用,性能是第一位的,对缓存的要求极高。如果 App 对定位,拍照,数据或图片处理有较高要求的话, RN,H5 之类的技术,就可能不是最好的选择,对于外包而言,成本和开发效率如果是第一的,Native开发就可能不是最好的选择了。所以,问题的关键是确定核心关注点 和关键约束条件,目的清晰,那么选型就能够有的放矢了。多聊几句, 大家谈App 技术选型的时候,还需要考虑一下App 测试的相关框架,如果是自己做产品的话,DevOps 一体,才能有效率的提升。