Flutter项目初学记 一

130 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 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

跨平台方案对比

方案FlutterReact-NativeUniapp
编写方式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