移动应用开发:Flutter
前言
“镜子镜子 告诉我,世界上最好的语言是什么”
“当然是... “
开始正文吧。
该篇博文主要记录了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 中文网
- 《Flutter实战》电子书 - 移动开发技术简介
- Flutter介绍 - Flutter,H5,React Native之间的对比
- Flutter | 什么是 Flutter?
移动应用开发:Flutter的更多相关文章
- 使用VSCode开发Flutter
前言 为什么使用VSCode? flutter官方推荐的编辑器有IDEA/Android Studio和VSCode, 之前开发Flutter用的IDEA, 不过IDEA始终比较重,于是换用VSCod ...
- Flutter Android 真机器调试 、模拟器调试、Vscode 中开发 Flutter 应用
必备条件: 1.准备一台 Android 手机 2.手机需要开启调试模式 3.用数据线把手机连上电脑 4.手机要允许电脑进行 Usb 调试 5.手机对应的 sdk 版本必须安装 注意: 1.关闭电脑上 ...
- vsCode开发flutter项目
Visual Studio Code 安装: 下载链接:https://code.visualstudio.com/ 下载完成后根据步骤自行安装. 使用vsCode开发flutter项目需要部 ...
- 安装与配置Flutter开发环境
这篇博客我们介绍了Flutter,并且对比了H5,React Native,Flutter. 由于Flutter是跨平台的开发框架,开发一次可以同时运行在Android和iOS上面,所以我们开发时最好 ...
- Flutter Plugin开发流程
这篇文章主要介绍了Flutter Plugin开发流程,包括如何利用Android Studio开发以及发布等. 本文主要给大家介绍如何开发Flutter Plugin中Android的部分.有关Fl ...
- Flutter与Android混合开发及Platform Channel的使用
相对于单独开发Flutter应用,混合开发对于线上项目更具有实际意义,可以把风险控制到最低,也可以进行实战上线.所以介绍 集成已有项目 混合开发涉及原生Native和Flutter进行通信传输,还有插 ...
- mac 上配置flutter开发环境
(ios,Android,Xcode,Android Studio,VScode,IDEA) 1)安装Flutter SDK 2)iOS 环境配置 3)Android Studio配置 4)VS co ...
- Mac版最详细的Flutter开发环境搭建
上周任务不多,闲来无事想学习一下flutter耍一耍,发现flutter的环境搭建步骤还是很繁琐的,官网的搭建教程只是按步骤让你进行操作,中间出现的问题完全没有提及,对我这种没搞过原生开发的小白来说超 ...
- 入门: 在Windows上搭建Flutter开发环境
使用镜像 由于在国内访问Flutter有时可能会受到限制,Flutter官方为中国开发者搭建了临时镜像,大家可以将如下环境变量加入到用户环境变量中: export PUB_HOSTED_URL=htt ...
- 【老孟Flutter】6种极大提升Flutter开发效率的工具包
老孟导读:本文介绍6种极大提升Flutter开发效率的工具包. [1] 强大的日志软件包 在开发 Flutter 的过程中打印日志是常用的调试方式之一,但 Flutter 内置的日志打印非常简单,下面 ...
随机推荐
- 力扣 - 剑指 Offer 27. 二叉树的镜像
题目 剑指 Offer 27. 二叉树的镜像 思路1(递归) 我们可以使用深度优先搜索,先递归到链表的末尾,然后从末尾开始两两交换.就相当于后续遍历而已 记得要先保存下来node.right节点,因为 ...
- 5、使用ZSetOperations(有序)操作redis(Zset有序集合)
文章来源:https://www.cnblogs.com/shiguotao-com/p/10564454.html 方法 c参数 s说明 void set(K key, V value); ke ...
- Ubuntu压缩和解压缩
1.常用的压缩格式 tar tar.bz2 tar.gz 2.gzip压缩 gzip xxx //压缩 gzip -d xxx.gz //解压缩 gzip对文件夹的压缩 gzip -r xxx //文 ...
- Java LinkedList小记
1. 基本用法 LinkedList实现了List.Deque.Queue接口,可以按照队列.栈和双端队列的方式进行操作.LinkedList有两个构造方法,一个是默认构造,另一个接受Collecti ...
- 【SCOI2005】繁忙的都市
Description 城市C是一个非常繁忙的大都市,城市中的道路十分的拥挤,于是市长决定对其中的道路进行改造.城市C的道路是这样分布的:城市中有n个交叉路口,有些交叉路口之间有道路相连,两个交叉路口 ...
- Codeforces 1067E - Random Forest Rank(找性质+树形 dp)
Codeforces 题面传送门 & 洛谷题面传送门 一道不知道能不能算上自己 AC 的 D1E(?) 挺有意思的结论题,结论倒是自己猜出来了,可根本不会证( 开始搬运题解 ing: 碰到这样 ...
- FVCOM编译过程详解
本文目的旨在介绍fvcom编译的全过程,顺便介绍linux中make命令的文件写法和一般的编程过程简述一下. 1.编程过程 编程,一般就是编写可执行程序过程.这个过程主要是源文件生成中间代码文件,再到 ...
- Mysql 预处理 PREPARE以及预处理的好处
Mysql 预处理 PREPARE以及预处理的好处 Mysql手册 预处理记载: 预制语句的SQL语法在以下情况下使用: · 在编代码前,您想要测试预制语句在您的应用程序中运行得如何.或者也许一个 ...
- android 点击图片从Fragment跳转到activity
android 点击图片从Fragment跳转到activity 在Fragment里编写 public View onCreateView(@NonNull LayoutInflater infla ...
- Spark(十一)【SparkSQL的基本使用】
目录 一. SparkSQL简介 二. 数据模型 三. SparkSQL核心编程 1. IDEA开发SparkSQL 2. SparkSession 创建 关闭 获取SparkContext 3. D ...