平台独立开发
- 完整的软件系统需要移动端:iOS 端和 Android 端
- iOS 端使用 OC、swift 进行开发
- Android 端使用 java、kotlin 进行开发
- 对于公司来说,开发维护成本比较高。大家都希望可以一套代码同时运行在 iOS 和 Android 俩个系统上
跨平台解决方案:WebView
- 基于 javaScript 和 webView 的跨平台
- iOS 端:通过 UIWebView 渲染 html、css、javaScript
- Android 端: 通过 WebView 渲染 html、css、javaScript
- 但是 webview 不能调用本地的一些服务,比如相机、蓝牙等等,所以需要通过 javaScript 进行桥接调用 Native 的一些代码来完成某些功能
- webView 本身的体验、性能并不理想,而且开发过程中坑非常多
跨平台解决方案:ReactNative
- ReactNative(RN) 是 facebook 推出的跨平台移动应用开发框架,是 facebook 早先开源的 js 框架 React 在原生移动应用平台的衍生产物,目前支持 iOS 和 Android
- RN 使用 javaScript 语言,类似于 html 的JSX,以及 css 来开发移动应用,因此熟悉 web 前端的开发人员只需要很少的学习就可以进入移动应用的开发领域
- ReactNative 所有的标签不是真实控件,javaScript 代码中所生成存的 dom,最后都是由 Native 端解析,再得到对应的 Native 控件渲染,从而保证了良好的渲染性能
- 由于 RN 的本质是通过 javaScript 调用原生接口,通信相对比较低效,而且框架本身不负责渲染,而是间接通过原生进行渲染
跨平台解决方案:Flutter
- Flutter 是基于 Google 的 Dart 语言开发的一款开源、免费的移动 UI 框架,可以让我们快速的在 iOS 和 Android 上构建高质量代码
- Flutter 内置了 iOS 风格和 Android 风格控件,有丰富的 API,平滑而自然的滑动效果和平台交互感,有非常好的用户体验
- Flutter 的 UI 渲染性能很好,在生产环境下, Flutter 将代码编译机器码执行,并充分利用 CPU/GPU 的图形加速能力,因此使用 Flutter 开发的移动应用即使在低配手机上也能实现每秒 60 帧的 UI 渲染速度
主流开发技术对比
- Flutter 利用 Skia 绘图引擎,直接通过 CPU、GPU进行绘制,不会依赖任何原生的控件
- iOS/Android 操作系统中,编写原生控件实际上是依赖于 Skia 进行绘制
- 类似 RN 的框架,必须通过某些桥接的方式先转成原生进行调用,之后进行渲染
大前端学不懂系列
客户端开发者: 从 Android 到 iOS,或者从 iOS 到 Android,到 RN,甚至原来越多的客户端开发者接触前端相关知识(Vue、React、Angular、小程序)
前端开发者:从 jQuery 到 AngularJS,到三大框架并行:Vue、React、Angular 还有小程序,甚至现在也要接触客户端开发(RN、Flutter),包括TypeScript、Webpack、uniapp、Node.js
大前端开发不像服务器一样,几年甚至几十年还是那一套东西,新技术会层出不穷