前言

“镜子镜子 告诉我,世界上最好的语言是什么”

“当然是... “

开始正文吧。

该篇博文主要记录了Flutter、H5、React Native 及原生开发的选择对比,以及对 Flutter 的介绍(这里主要是因为之后的移动端开发选择了 Flutter)

Flutter 介绍

Flutter 是 Google 推出的一个移动应用开发框架,支持跨平台,即开发者可以通过 Dart 语言实现一套代码同时在 Android 和 IOS 平台上运行。Flutter 除了跨平台这个特性,还在于其提供了流畅的、高保真的 UI 体验,Flutter 内置的组件,丰富的 API ,响应式框架等都给开发带来了便利。

移动应用开发:选择对比

原生开发

原生应用指的是某一移动平台特有的应用(例如 IOS 或 Android ),需要使用不同的语言及调用不同的 SDK 进行开发。

其缺点在于开发成本高,不同平台需要维护多套代码从而增大人力成本;若有新功能更新则要发布新版本,同时用户需下载新版本进行更新。

使用原生开发的优点是可以访问平台的全部功能,且速度快、性能高,整体用户体验好。

H5 技术

H5 移动端开发主要是网页+JavaScript,目前比较流行的 JS 框架有 Vue、React、AngularJS 等都是为了构建网页。这些针对移动端所构建出来的网页可以实现跨平台,相比于原生开发而言,减少了开发及维护的成本;且用户无需每次都下载新版本进行更新。但其也存在明显的缺点:渲染效率低,用户体验差;网页调用设备的硬件 API 较为困难。

React Native

React Native ( 简称RN ) 是 Facebook 在2015年开源的一个跨平台移动应用开发框架,是 React 在原生移动应用平台的衍生产物。RN 使用 JavaScript 语言,类似于 HTML 的JSX 以及 CSS 来开发移动应用。与 H5 开发不同的是,它使用 JS 桥接技术在运行时编译成各个平台的 Native 代码。其优点在于目前的生态较为成熟,也有很多的跨平台应用使用的 React Native ;支持热部署,开发过程中可以节约很多时间。

Flutter

前面介绍了这么多移动应用开发技术,终于到 Flutter 了。在前面的 Flutter 介绍中也已了解到 Flutter 是一个跨平台的框架,可以实现一套代码在不同的平台上运行。

Flutter 在 React Native 的设计思想上又做了很大的优化,它将代码编译成原生代码,并且直接在各个平台中使用其高效渲染引擎 Skia 进行渲染,没有桥接,不调用平台相关控件。

这种设计思想完美解决了不同平台的性能问题。

Flutter 的特点:

  • 有丰富的视图组件
  • 支持热部署,开发时可以像网页开发一样实时看到效果

但它也存在一些不足:目前学习的资源比较少;其相关生态也没有 React Native 那样丰富。

总结

“镜子镜子 告诉我,世界上最好的语言是什么”

“当然是... “

你觉得呢?

文章总结想引用知乎上的一个问题的回答:需要开发app和h5,用Flutter靠谱吗?

flutter目前web端并不是那么友好,移动端的话目前除了流畅和生态比原生差点,其它都还好,如果小型项目,而且并不是和硬件打交道比较多,只涉及一些图形交互的业务逻辑的话,建议用uniapp这种类似的H5移动端一站式解决方案。

至于纯原生开发,除非一些经常和系统硬件打交道的App(如摄像头相关的图像处理,平衡仪相关的游戏或者其他业务需求),一般都很少用原生开发。一来项目管理和人力成本因为两个团队的原因会比较大,二来时间上肯定原生开发时间周期更长,三来是没必要。

总体结论:

根据需求来,简单的图形业务App用uniapp这种就够了,网站、移动端App、小程序一套代码稍微修改就可以上线了,稍微追求一点效率和流畅性的用flutter构建移动端,vue做H5,极限点就iOS、Android各自用原生,网页还是用vue。

选择当下最符合业务需求的、最合适的就是最好的。

参考

移动应用开发:Flutter的更多相关文章

  1. 使用VSCode开发Flutter

    前言 为什么使用VSCode? flutter官方推荐的编辑器有IDEA/Android Studio和VSCode, 之前开发Flutter用的IDEA, 不过IDEA始终比较重,于是换用VSCod ...

  2. Flutter Android 真机器调试 、模拟器调试、Vscode 中开发 Flutter 应用

    必备条件: 1.准备一台 Android 手机 2.手机需要开启调试模式 3.用数据线把手机连上电脑 4.手机要允许电脑进行 Usb 调试 5.手机对应的 sdk 版本必须安装 注意: 1.关闭电脑上 ...

  3. vsCode开发flutter项目

    Visual Studio Code 安装: 下载链接:https://code.visualstudio.com/ 下载完成后根据步骤自行安装.     使用vsCode开发flutter项目需要部 ...

  4. 安装与配置Flutter开发环境

    这篇博客我们介绍了Flutter,并且对比了H5,React Native,Flutter. 由于Flutter是跨平台的开发框架,开发一次可以同时运行在Android和iOS上面,所以我们开发时最好 ...

  5. Flutter Plugin开发流程

    这篇文章主要介绍了Flutter Plugin开发流程,包括如何利用Android Studio开发以及发布等. 本文主要给大家介绍如何开发Flutter Plugin中Android的部分.有关Fl ...

  6. Flutter与Android混合开发及Platform Channel的使用

    相对于单独开发Flutter应用,混合开发对于线上项目更具有实际意义,可以把风险控制到最低,也可以进行实战上线.所以介绍 集成已有项目 混合开发涉及原生Native和Flutter进行通信传输,还有插 ...

  7. mac 上配置flutter开发环境

    (ios,Android,Xcode,Android Studio,VScode,IDEA) 1)安装Flutter SDK 2)iOS 环境配置 3)Android Studio配置 4)VS co ...

  8. Mac版最详细的Flutter开发环境搭建

    上周任务不多,闲来无事想学习一下flutter耍一耍,发现flutter的环境搭建步骤还是很繁琐的,官网的搭建教程只是按步骤让你进行操作,中间出现的问题完全没有提及,对我这种没搞过原生开发的小白来说超 ...

  9. 入门: 在Windows上搭建Flutter开发环境

    使用镜像 由于在国内访问Flutter有时可能会受到限制,Flutter官方为中国开发者搭建了临时镜像,大家可以将如下环境变量加入到用户环境变量中: export PUB_HOSTED_URL=htt ...

  10. 【老孟Flutter】6种极大提升Flutter开发效率的工具包

    老孟导读:本文介绍6种极大提升Flutter开发效率的工具包. [1] 强大的日志软件包 在开发 Flutter 的过程中打印日志是常用的调试方式之一,但 Flutter 内置的日志打印非常简单,下面 ...

随机推荐

  1. html+css第十篇-命名

    命名:根据每块元素的主题 或者功能.在页面上的位置 php 每个单词中间以"_"隔开 #main_left_box{} 驼峰命名 从第二个单词开始每个单词的首字母大写 #mainL ...

  2. Jmeter BlazeMeter实现web录制

      1. BlazeMeter安装和注册 BlazeMeter是一款与Apache JMeter兼容的chrome插件,采用BlazeMeter可以方便的进行流量录制和脚本生成,作为接口测试脚本编写的 ...

  3. Linux设置默认的声卡

    首先查看自己电脑上的声卡 使用命令行查看 orangepi@orangepi3:~$ ll /proc/asound/ total 0 dr-xr-xr-x 4 root root 0 Dec 23 ...

  4. 入坑 OI 249561092 周年之际的一些感想

    2018.2.10~2021.2.10 又是一年的 2 月 10 日,今天的到来意味着我 OI 生涯的第三年已经结束,即将开启 OI 生涯的第四年了.回顾这三年以来自己由懵懂.无知慢慢变成熟的历程,感 ...

  5. 一个画组织解剖图R包

    地址: https://github.com/jespermaag/gganatogram

  6. Python——MacBook Pro中安装pip

    1.系统已有python2和python3,如何检查MacBook Pro系统是否安装的有pip? 看到terminal的提示没有,有提示pip的,下面的提示,说明pip安装了. 要查看pip3是否安 ...

  7. Linux学习——Gdb基本调试方法&&多线程调试

    1.Gdb的基本调试 示例代码 //e.c #include <stdio.h> void debug(char *str) { printf("debug info :%s\n ...

  8. Go语言缺陷

    我为什么放弃Go语言 目录(?)[+] 我为什么放弃Go语言 有好几次,当我想起来的时候,总是会问自己:我为什么要放弃Go语言?这个决定是正确的吗?是明智和理性的吗?其实我一直在认真思考这个问题. 开 ...

  9. (转载)VB中ByVal与ByRef的区别

    ByVal是按值传送,在传的过程中不会改变原来的值,仅仅传送的是一个副本, 而 ByRef相反,从内存地址来说,后者是同一个内存地址. ByVal 与 ByRef(默认值)这两个是子过程的参数传递时, ...

  10. MYSQL(3)

    加载C盘下的目录 全表查询 查询部分字段 查询总数 条件过滤 and or 包含 范围检查 between and 否定结果not 匹配任意字符    like 以什么开始^   rlike 以什么结 ...