我们的移动混合开发之旅

简介:

在移动开发这片热土上,除了原生之外,也有一些公司在尝试着新技术、新模式,这是混合开发诞生和延续意义以及价值。

原生开发和混合开发的优缺点也已经是一个老生常谈的事儿了,在这里我就简单来说一下:

  原生开发优点:灵活、主流、成熟、解决问题成本等优点;

  混合开发技术:开发效率快,上手难度低,跨平台(一套代码可以运行在ios/android)上;

缺点就不用多说了,他们本身的优点也是牵制对方的缺点。

进入主题

  而我们本文重点要说的是我们在将近3年的实践当中,对与混合开发的一些思考与总结,希望可以帮助一些公司在混合开发技术框架选型上少走一些弯路,当然本文所述的所有信息都是我对于这些技术一些自己的理解,对你只是有参考作用,不能完全替代和帮助框架师对于技术的选型,俗话说的好:“明白了很多道理,依然过不好这一生.”,有些坑还是要自己踩的,不然也不会懂得什么叫“刻骨铭心”!

框架进阶之路

  我们这三年的时间,做的是一款综合类app,里面主要的功能有:新闻、工具(十余款)、聊天、朋友圈,功能可以说比较多。

  而我们使用的混合开发框架有:

  • DCloud
  • DeviceOne
  • Xamarin
  • React Native

下来我们说这四款框架的优缺点;

1、DCloud

  DCloud作为我们最早(2015年)使用的WebApp框架,可以说让我们用的非常的不舒服,DCloud是我们精心选择的第一款混合开发框架,对比了同类的webapp框架还算优秀,有自己的开发工具HBuilder,有很好的模板和Demo让我们能很快的上手写代码,配合官方MUI(DCloud的UI解决方案),咋一看用起来还可以,然而在我们的实践中还暴露了很多问题,下面我来列举一下:

  优点:

  • 门槛比较低(懂Js和Html的程序员对照着api很快能够上手);
  • 有一整套的解决方案,开发工具+UI库;

  缺点:

  • 使用的是传统H5技术,在性能上尤其是低端android机上有瓶颈,高端机操作上也有明显的延迟;
  • 打包是在线打包,服务器经常挂,至少2015年是这样,结果你着急上东西,却迟迟打不出来app,有一定的制约和风险性;
  • 文档不是很全,有些东西不太好找;
  • 页面生命周期执行函数存在概率事件,这个事情当时纠结了很久,官方的回复也是有一定的几率执行或者不执行,2015年是这样,现在的情况不明;

  总体来说:DCloud看起来入门很容易,但是想要写好需要很好的js功底,普通水平的js写出来的app用户体验非常有局限性,基于上面的问题,我们决定换掉它。

2、DeviceOne

  DeviceOne(下文简称do)是我们国内北京的一个公司做的,他也有自己的开发工具,是基于eclipse改的,编译器可以说很不好用,不时的需要重新启动一下,而do和DCloud的最大区别是,do不是webapp,所以在性能上do是远远胜于DCloud的,do在UI上采用的是“组件商店”的概念,在说这个概念之前先要说说do的基本原理,do开发使用的是js语言,是标准的js函数,而js方法调用的组件,全部是用原生封装好的,所以你使用的每个组件:第一、可以在开发工具上拖拉拽;第二、官方开发了他们开发组件的接口每个人都可以给他们写组件,下来具体说说他们的优缺点:

  优点:

  • 开发效率极高,组件拖拉拽就可以;
  • 开发门槛低,会js即可;
  • 执行效率高;

  缺点:

  • 开发质量、开发的功能,受组件的制约,组件有bug你写出来的app就有bug,组件没有的功能,你app也实现不了;
  • deviceone的打包次数和下载次数有限制,超出的需要收取费用;
  • 使用的是在线打包,服务器偶尔也会挂;  
  • 有些组件有问题,找官方处理,他们会让你写错误示例的demo,刚开始写一个两个还好,最后给do写错误demo成了工作的一部分了,影响工作效率;
  • 使用的人不多,网上的资料/替代方案相对匮乏;

总体来说:do性能和模式都是ok的,只是开发app受外界因素影响比较多,资料比较少,替代方案几乎没有。

3、Xamarin

  经历了两次框架更换之后,我们把希望寄托给了微软的Xamarin,用它的一个好处是可以使用C#开发,对于C#出身的程序员来说,简直是梦寐以求的事情,在一个好处就是他有一个“好粑粑”,以之前我们对于C#的信任,让我们对于Xamarin的技术,也不自觉的产生了好感,以至于我们错误了低估了他能带给我们的“麻烦”。

  优点:

  • 可以使用C#语言开发;
  • 本地打包,不在受其他平台服务器的制约;
  • 调试方便,vs开发工具打断点容易;

  缺点:

  • 国内资料少,资料都是国外的;
  • 应用群体少,成熟解决方案少,很多第三方组件不支持,我们在绑定三方的组件比如:极光推送、相册选择、友盟统计、百度地图等ios绑定上耗费了大量的时间和经历;
  • 开发成本高,C#程序员也来越少也越来越难招;
  • ios意外的闪退比较多,而且原因不好找;

总体来说:开发成本相对于之前两款框架来说,耗费的成本要高很多,Xamarin本身的功能也有限,使用的人数少,导致资料和解决方案少,开发成本和解决问题的成本很高,有很多组件没有很好的封装,集成起来也相对麻烦很多。

4、React Native

  我们目前正在使用的框架,Facebook和JD的开发框架,在混合开发技术领域属于正统的,主流的框架,网上的资料多,基于React技术JSX技术相对成熟,开发成本低会js稍加学习一下JSX的语法即可,基于npm生态系统,所有nodejs可以使用的三方包,都可以使用,可以使用es5/es6/es7的语法开发app,非常舒服,第三方组件和绑定原生库都非常的简单方便,网上的资料也非常多。

  优点:

  • 开发门槛低(会js稍加学习jsx语法即可);
  • 资料多,解决问题成本低;
  • 开发效率高,第三方集成组件多;
  • 有好的开发生态圈,性能好,背靠npm有万级以上的优秀开源三方组件支持;

  缺点:

  • 初学者,配置较多,开发环境配置不是很方便;
  • Facebook的更新频率比较快,版本存在一定的差异,有些老的资料可能并不适用于现在的版本;

总体来说:React Native对于混合开发来说应该是一个不错的选择。

总结

所有的经历,到最后都会变为经验,拥抱变化,不断的尝试和学习新的技能,会让你收益匪浅,墨守成规已经不在适应这个物竞天择的世界。成长的道路上会遇到很多坎坷和挫折,但不管这些试错成本有多大,他最后产生的价值,要远远大于固步自封与墨守成规带来的后果。

 






本文转自王磊的博客博客园博客,原文链接:http://www.cnblogs.com/vipstone/p/7659319.html,如需转载请自行联系原作者

目录
相关文章
|
2月前
|
XML 存储 Java
探索安卓开发之旅:从基础到进阶
【9月更文挑战第37天】安卓开发,一个充满无限可能的领域。它不仅关乎技术的深度与广度,更关乎开发者的成长与突破。本文将带你走进安卓开发的世界,从基础知识的学习到进阶技巧的掌握,一起感受编程的魅力与乐趣。
|
1月前
|
测试技术 开发工具 Android开发
探索移动应用开发之旅:从基础到精通
本文旨在为初学者和有经验的开发者提供一份全面的移动应用开发指南。我们将从移动操作系统的概述开始,深入到移动应用开发的各个方面,包括编程语言、工具选择、设计原则以及测试与部署策略。无论你是刚踏入这一领域的新手,还是希望提升技能的资深开发者,这篇文章都将为你指明方向,助你构建出既美观又实用的移动应用。
|
2月前
|
移动开发 Dart 搜索推荐
打造个性化安卓应用:从零开始的Flutter之旅
【10月更文挑战第20天】本文将引导你开启Flutter开发之旅,通过简单易懂的语言和步骤,让你了解如何从零开始构建一个安卓应用。我们将一起探索Flutter的魅力,实现快速开发,并见证代码示例如何生动地转化为用户界面。无论你是编程新手还是希望扩展技能的开发者,这篇文章都将为你提供价值。
|
5月前
|
移动开发 前端开发 Android开发
IT入门知识第七部分《移动开发》(7/10)
IT入门知识第七部分《移动开发》(7/10)
41 0
|
3月前
|
开发工具 Swift 数据安全/隐私保护
移动应用开发之旅:从零到一的iOS系统探索
【9月更文挑战第16天】在数字时代的浪潮中,移动应用成为连接用户与数字世界的桥梁。本文将带你走进iOS移动操作系统的世界,了解其架构、设计理念以及开发环境。我们将通过Swift语言的简单示例,展示如何构建一个基本的iOS应用,并探讨移动应用开发的未来趋势。无论你是编程新手还是资深开发者,这篇文章都将为你提供宝贵的见解和知识。
|
3月前
|
存储 IDE 开发工具
移动应用开发之旅:打造你的首个iOS应用
【9月更文挑战第23天】在数字化浪潮中,移动应用已成为连接用户与数字世界的关键桥梁。本文将带领读者踏上开发属于自己的第一个iOS移动应用的旅程,从理解移动操作系统的核心概念出发,逐步深入到实际的应用构建过程中。通过简洁明了的语言和具体的代码示例,我们将一起探索如何在苹果的iOS平台上实现一个简单的“待办事项列表”应用,让读者不仅能够学习到编程知识,还能体会到将想法转化为现实产品的成就感。无论你是编程新手还是希望扩展技能的开发者,这篇文章都将为你提供一个实用的指南,帮助你迈出成为移动应用开发者的第一步。
|
3月前
|
安全 Swift iOS开发
探索iOS开发之旅:Swift语言的魅力与挑战
【9月更文挑战第21天】在这篇文章中,我们将一起潜入iOS开发的海洋,探索Swift这门现代编程语言的独特之处。从简洁的语法到强大的功能,Swift旨在让开发者能够以更高效、更安全的方式构建应用程序。通过实际代码示例,我们会深入了解Swift如何简化复杂任务,并讨论它面临的挑战和未来的发展方向。无论你是初学者还是有经验的开发者,这篇文章都将为你提供新的视角和知识。
52 4
|
4月前
|
存储 开发工具 Android开发
移动应用开发之旅:从零到精通
【8月更文挑战第30天】本文将带领读者踏上移动应用开发的奇妙旅程,从最初的构想到最终的实现。我们将探索不同的移动操作系统,理解它们的特点,并学习如何为这些平台开发应用程序。无论你是初学者还是有经验的开发者,这篇文章都会为你提供宝贵的见解和实用的技巧。让我们开始吧!
45 3
|
4月前
|
存储 开发工具 Android开发
打造你的专属安卓应用:从零开始的Flutter之旅
【8月更文挑战第31天】在数字时代的浪潮中,拥有一款属于自己的应用不仅是梦想的启航,也是技术实力的展现。本文将引导你使用Flutter框架,轻松步入安卓应用的开发世界。无论你是编程新手还是希望拓展技能边界的开发者,跟随这篇指南,你将学会如何搭建开发环境、设计用户界面,并实现基本功能。让我们一起探索代码的力量,开启一段创造之旅吧!
|
6月前
|
移动开发 Dart 前端开发
探秘移动开发新纪元:Flutter框架的跨平台魅力
Flutter,谷歌的开源UI工具包,不仅革新前端开发,其跨平台特性延伸至后端,通过Dart语言统一开发流程,提升效率与一致性。使用Aqueduct框架,开发者可构建REST API,如创建新项目、定义数据模型和控制器,实现前后端同栈开发。Flutter与Dart的结合正重塑移动开发,开启全栈新纪元。
110 2

热门文章

最新文章