关闭

移动端开发调研整理

IT985 1年前 ⋅ 495 阅读

这里主要介绍目前比较主流的一些移动端开发技术方案,以及互相之间的优缺点。

  • 技术方案

    • WebApp

    • Native App(原生App)(android、iOS)

    • Hybrid App(混合App)(android+H5)(iOS+H5)

    • react native

    • flutter

    • 小程序

    • weex

    • uniapp

WebApp

首先来说一下最为熟悉的Webapp,也就是我们常说的h5,说白了就是特定运行在移动端浏览器上的网站应用。通过HTML+CSS+Javascript,从页面架构到样式布局再到逻辑交互。现在最多的是单页面应用SPA(Single-page Application),常见的实现方案为:vue、react、angular;

  • 优势

    • 可以做到跨平台,调试方便

    • 不需要手机安装,不会占用手机的内存,更新速度快

    • 不存在多版本问题,维护成本低

    • 临时入口,可以做嵌入式

    • 开发人员上手速度快

  • 劣势

    • 依赖网络,首次访问加载速度慢,耗费流量

    • 受限于手机和浏览器性能,用户体验差

    • 功能受限严重,大量移动端的功能无法实现

    • 入口强依赖于第三方浏览器,只能以url地址的形式存在,导致了用户的留存率低(优点及缺点)

UI同学们可以注意下:

Native App

接下来说一下原生开发,自从IOS和Android两个手机的操作系统存在以来,就多了一个新的名词App,意思是运行在智能移动终端设备的第三方应用程序。也叫本地app。一般使用的开发语言为Java、C++、Objective-C。

  • 优势

    • 相比于其他开发模式,这种模式提供的用户体验最佳,最优质的用户界面,最华丽的交互

    • 针对不同的平台提供不同的体验

    • 相比webApp,节省带宽成本,打开速度快

    • 功能最为强大,特别是跟系统的交互中,几乎所有的功能都能实现

    • IOS独立的优势,AppStore培养了一种比较好的用户付费模式,所以开发者的盈利模式很明朗

  • 劣势

    • 门槛高,原生开发人员人才稀缺,至少比前端和后端少

    • 无法做到跨平台开发,开发的成本比较大,各个系统都需要独立开发

    • 发布成本高,需要通过store或各个手机的软件审核,导致更新缓慢

    • 维护多个版本,多个系统的成本比较高,而且需要做到兼容

    • 应用市场逐渐饱和,如何去做宣发,抢占用户,需要花费很大的时间和金钱,导致了很多“僵尸”app

Hybrid App(混合开发)

混合开发,也就是半原生半Web的开发模式,这种模式主要是通过将web页面嵌入到app中,通过原生的web view提供容器,将web页面在app中展示,原生只需要开发一些跟系统交互相对复杂的页面即可,不需要和系统交互,或者跟系统简单交互的页面,都可以通过web来实现,原生只需要将一些功能当作api暴露给web页面就行,而web的页面又能做到两个系统兼容,大大减少了原生的工作量,也减少了人员和时间成本。

  • 优势

    • 相对于web开发,不再局限于浏览器的运行环境,同样在web页面也能做到一些跟系统交互的能力

    • web页面可以做到系统之间的兼容,减少了开发的成本

    • 减少了原生的人员成本,只需要较少的原生配合就好,大部分的工作量都交给了web开发

    • web页面可以做到热更新,只更改app内web的页面的话可以做到热更新,不需要通过系统的审核

    • 调试简单,web页面依旧可以在浏览器中调试

  • 劣势

    • 比较考验原生的web View的解析渲染效率,因为web View相当于在app内嵌入了一个浏览器的渲染引擎,然后渲染web页面,举一个之前遇到的一种情况:由于大部分页面都是由web来实现的,导致了web项目比较庞大,原生为了避免由于缓存的问题导致页面加载的数据展示问题,就每次都会把缓存清除,这样就导致了,从原生页面首次进入web页面的时候会有加载缓慢,白屏的情况出现。解决方案:1.优化web项目的架构,尽可能的减轻web想的首屏加载的文件体积大小,减少加载时间。2.原生的缓存机制的优化。

    • 即懂原生,又懂web的人才比较难找,所以基本是需要原生和web两部分的人员

    • 相比原生,对于网络的要求比较高

==============================

接下来介绍跨平台开发,所谓的跨平台开发就是指一套代码兼容多平台

 

react native

起初Facebook发现混合开发存在很多缺陷和不足,于是发起开源的一套新的App开发方案RN(reactNative)。使用JSX语言写原生界面,js通过JSBridge调用原生API渲染UI交互通信。

  • 优势

    • 对于混合开发来说,他的优势在于页面的UI不是用的web端的dom在webView组件中渲染的,而是通过JSBridge渲染的原生的UI,由虚拟dom来驱动页面的view层渲染

    • 不需要原生开发人员去做api暴露的工作了,减少了人员的成本代价,而且用的是react语法,对于前端来说更加友好容易上手

    • 对于webapp来说,可以做到很多跟系统之间的交互

    • 因为JSBridge作为中间层,不仅做了调用系统api的内容,而且,还会将页面的UI做相应的编译,达到一套代码可以多平台发布,做到了多平台兼容,降低了开发成本

    • 针对app开发最大的优势在这里,那就是它可以绕过软件商店的审核机制,做到线上热更新

    • 成熟度来说

      • 2013 年夏季,Facebook 黑客马拉松 – React Native 作为 Facebook 内部项目开始

      • 2015 年 1 月,React.js 会议– React Native 1 发布

      • 2015 年 3 月,F8 大会 – React Native 正式启动

        • Facebook 宣布 React Native 为 “开放使用并在 Github 上可用”

  • 劣势

    • 只是接近原生而已,上面也提到了,rn是通过JSBridge作为中间层渲染的原生界面,通过虚拟dom来驱动的,所以用户体验和性能跟原生开发还是有一些差别的

    • 应用程序的包体积,Android默认是不支持运行javascript代码的,所以也就意味着,使用rn开发的应用程序需要包含一个支持javascript代码的库。那就导致了它开发出来的应用程序要比普通的原生产品体积大。不过还在rn团队正在减小应用程序的体积大小

    • 应用组件和原生组件看起来一样,在任何操作系统更新之后,你的应用程序组件也会升级,可能会破坏应用的用户界面

那些应用在用rn技术呢:https://reactnative.dev/showcase

Flutter

Flutter 是 Google 的 UI 工具包,用于从单个代码库为移动、web、桌面和嵌入式设备构建漂亮的、本机编译的应用程序,也就是所谓的一套代码运行在多端,它使用了Dart语言作为编程语言。之前的flutter在开发桌面应用程序的api还处于开发阶段,然而在前端时间更新的flutter2.0中,相同的代码库已经支持将本机应用程序发布到五个操作系统: iOS,Android,Windows,macOS 和 Linux。

  • 特点

    • 它基于 Dart——一种快速的,面向对象的编程语言。

    • 免费且开源

    • 该架构基于非常流行的反应式编程(它遵循与 React 相同的风格)

    • 它提供了自己的控件,这些控件是从自己的高性能渲染引擎中提取的,这些控件快速,有吸引力且可自定义

  • 优势

    • 他有热重载,所谓的热重载就是指,开发人员,随时修改自己本地代码库,代码库会实时运行到调试的应用程序中

    • 当然flutter和rn一样同样是一个跨平台的框架一次编写,多端运行

    • flutter不依赖原生系统组件,相反flutter拥有自己的一组自定义的组件(widgets)

    • 一样的UI,在不同的机型上,样式依旧可以做到相同,更rn不同,rn 是依赖的原生组件,所以有可能不同的机型上, 会有差别

  • 劣势

    • Dart语言对于前端工程师的学习代价要很大,而且flutter他作为一个,多端使用的框架, 那学习的代价其实挺大的,他有自己的独特的语法,有自己的UI库,而且dart并没有前端的javascript那么的广泛使用。

    • 因为他的成熟度跟rn比起来还是比较低的,尽管flutter是开源的,且有很多的库支持,但他毕竟相对来说是一个比较新的事物,可能会在使用中,无法在现有的库中找到满足需求的功能,因此只能开发人员自己去实现,这需要时间

    • 同样,作为一个混合开发的应用框架, 他的体积大小肯定也是比原生的要大,毕竟他不只做这一件事

    • 成熟性flutter从18年二月发展到现在,虽然很受人欢迎,但是他的稳定以及各个方面的工作,都需要时间来获得更多的优化,但是值得注意的是,gitHab上,flutter有12.2W stars, RN有9.6W

       

 


全部评论: 0

    我有话说: