一、目录
- 跨平台:跨平台是什么,有哪些平台要跨,为什么要跨平台
- 说说当下我们已知的一些跨平台方案,Flutter 对比这些方案有什么优劣
- 了解 Flutter 是什么
- Flutter 特点
- Flutter 核心思想
- 了解 Flutter 插件
- 目前的发展状况和未来的发展前景如何,是否有可能替代当下,成为未来
- 成为 Flutter 工程师需要具备的素质
二、聊聊“跨平台”
1、什么是跨平台
跨平台概念是软件开发中一个重要的概念,不依赖于操作系统,也不依赖硬件环境。一个操作系统下开发的应用,放到另一个操作系统下依然可以运行。
这是百度百科对于“跨平台”一词的解释,意思是判断一个软件是否可以跨平台,主要的因素就是可以在不同操作系统和不同硬件下依然可以运行。
但这儿有一个疑问:如果在同一操作系统下,同样的硬件环境下,如果可以跨 Native 与 Web 运行,这算不算是跨平台呢 ?在我看来,这个四舍五入后也算是约等于跨平台了,毕竟 Web 应用和 Native 应用算是差异较大的两套运行环境。
2、有哪些平台要跨
移动端:
- Android(谷歌)
- iOS(苹果)
- Fuchsia OS(谷歌)
- Symbian OS(Nokia)
- Yun OS:(阿里)
- Harmony OS(华为)
PC 端:
- Windows(微软)
- Mac OS(苹果)
- Unix/Linux
- Ali OS(阿里)
- Chrome OS(谷歌)
其实还有很多比较小众的操作系统就不一一列举了,而这些操作系统中市场规模最大的要属移动界的 Android、iOS 和 PC 界的 Windows、Mac OS,而跨平台方案也主要是围绕这几位大神展开的。
3、为什么要跨平台
在现有多平台模式下,如果想要开发一个原生应用,并在多个平台使用,每个平台都需要独立的代码库和独立的开发团队,基本无法实现代码复用。
举个例子:
微信在 Window、Mac OS、Android、iOS 上都分别用不同的语言开发了原生应用。
总成本 = 单平台成本(项目、人力、物力、财力等) x 4
也正是因为这个原因,各大小公司为了减少工作量和节省成本,都希望有一套更加高效的方案解决多平台成本问题。
三、目前市面的跨平台方案
1、Web App
不用写任何原生的代码,只写 Web 页面,利用各个平台都有浏览器的优势,直接将应用运行在浏览器上。
优点:
- 多平台共用代码,节省工作量
- bug 即时修复
- 无需重复发版
- 无历史问题
缺点:
- 性能不如原生
- 推广性不如原生,需要打开浏览器通过链接跳转,或搜索关键字,在用户体验上每多一步操作都可能损失大量用户。
2、Hybrid App
以原生壳子内嵌 WebView 的方式,将主要的业务逻辑用 Web 页面实现。
优点:
- 接近原生 App 体验
- 多平台共用代码,节省工作量
- bug 即时修复
- 基本无需重复发版
- 基本无历史问题
缺点:性能不如原生开发
3、小程序
依赖于拥有巨大流量的 App,将 Web 应用运行在宿主 App 上,无需下载安装即可使用,例:微信、支付宝。
优点:
- 多平台共用代码,节省工作量
- 无需下载安装
- bug 即时修复
- 无需重复发版
- 无历史问题
缺点:
- 性能问题
- 技术支持依赖宿主提供,无法直接对接原生系统
- 如果用户对宿主应用无使用需求,将难以进行推广
4、React Native
React Native 是 2015 年 Facebook 推出的原生应用开发框架。它使用 JavaScript 和 React 编写应用,利用相同的核心代码就可以创建 Web、iOS 和 Android 平台的原生应用。
优点:
- 原生体验
- 跨平台
缺点:
- 性能不能完全媲美原生
- 需要因为不同端的差异而在实现上进行妥协
5、Weex
Weex 是阿里推出的一套跨平台方案,也是利用桥接转化成原生组件,优缺点同 RN 类似,此处就不加赘述了。
四、Flutter 是什么?
Flutter 是谷歌推出的移动 UI 框架,第一次亮相于 2015 年 5 月 Dart 开发者峰会上,初始名字叫做 “Sky”,后更名为 Flutter。
Flutter 可以快速在 iOS 和 Android 上构建高质量的原生用户界面。
五、Flutter 牛逼在哪?
1、跨平台性
Flutter 可跨平台有:</