持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第6天,点击查看活动详情
Flutter概念
基本
- 由Google开源使用Dart语言构建界面的跨平台库
-
- Dart是一种强类型的语言(非常接近Typescript)
-
- Dart良好的支持Async/Await异步函数
- 使用Skia图像引擎渲染,可以保持各平台UI的完全一致性
-
- Skia是安卓内置的渲染引擎(故IOS平台会嵌入应用内,打包大小明显大一些)
-
- Skia直接向GPU提供数据
-
- Skia广泛应用于Google产品之中,如Chrome/ChromeOS/Android
-
- Flutter 2.x版本实现了Android、IOS、Web端的跨平台方案,刚刚发布的3.x新增了Wndows、MacOS、Linux支持
-
- Flutter开发支持运行时修改代码的热重载
-
- Flutter最低支持Android4、IOS9设备(部分第三方库需要拔高支持)
Flutter环境
- Android Studio运行环境
-
- Java环境
-
- Wndows、MacOS、Linux
- Xcode运行环境
-
- Macos
跨平台方案对比
| 方案 | Flutter | React-Native | Uniapp |
|---|---|---|---|
| 编写方式 | dart语言,前端需要时间熟悉,但是因为其灵活性以及与ts的相似度,语言的学习成本并不一定比RN更大,但是种类繁多的内置组件,需要大量时间熟悉 | react-native可以选择使用ts/js编写 react-native拥有一套独立的原生渲染组件库 react-native在不熟悉react的情况下,前端开发的学习成本仍然很大 | 使用Vue库开发,基本能做到随时上手,但是界面定制自由度较低 |
| 原生功能 (社区支持外的第三方SDK的调用均需要自行编写双端代码适配) | 本身只作为渲染库存在,基本不提供原生能力,需要单独针对平台编写代码,好在社区支持可以解决80%的原生调用 | 官方提供了部分原生功能,社区生态非常丰富,可以支持绝大部分场景的原生调用 | 官方提供了较为全面的原生调用,配合5+API可以支持绝大部分场景 |
| 性能 | 使用Skia引擎,可以保持双端效果的一致性,基本可以达到原生开发的性能 | 独有的组件在运行时转换为原生组件,具有一定的损耗,jsBrige在处理业务逻辑上同样存在着损耗,原生组件也不能保证双端效果一致性 | 基于webview渲染,有极大的不确定性, 在本身性能孱弱的情况下,混乱的css、js逻辑均有可能导致页面性能下降,对低端机器影响显著 |
编写规范
- 页面按模块在pages下新建目录
- 自定义组件必须放置于pages/widget目录,并已【ex_】作为前缀,组件类名使用大驼峰命名规则,如ExCard