Bootstrap

跨平台开发框架总结

根据跨平台的框架功能,我把跨平台框架主要分为3大类,分别是:
Web App网页Hybrid框架含有编译转换的框架

  • Web App网页
    Web App其实不算是严格意义上的App,我觉得应该把它称作网页端自适应移动版更合适。
    网页一般是wap开头的,比如wap.xxx.com。后来有了3g网络之后,升级为3g开头的,比如3g.xxx.com,还有一种是以m开头的,比如m.xxx.com。
    采取这样的一种策略的优势:入门门槛低,只需要会HTML5、CSS3、JS前端语言就可以开发Web App了,开发成本低,内容更新也很方便,Web App无需安装,可以在不同系统、不同平台和设备上运行。
    Web App缺点:用户体验比不上原生那么流畅,性能上比不上原生;有一些功能受浏览器、系统以及平台本身限制不好实现。
    新兴的Web App代表性的框架有:PWA、小程序
    PWA:
    它是 Google 公司于2015 年提出的,2016 年 6 月才推广的项目。
    PWA优势:
    PWA可以将App的快捷方式放置在桌面上,全屏运行,体验上与原生几乎一致,支持有网和断网时使用。PWA不包含原生OS相关代码。
    PWA缺点:
    PWA仍然是网站,只是在缓存、通知、后台功能等方面表现的更好。
    小程序:
    是一种无需下载安装即可使用的应用,只需要扫一扫或打开微信搜一下即可打开应用。
    小程序的优势:
    小程序开发门槛相对较低,难度比开发App小,能够满足需求的简单的基础应用。小程序能够实现消息通知、线下扫码、公众号关联等七大功能。通过公众号关联,用户可以实现公众号与小程序之间相互跳转。由于无需下载App,小程序推广起来更方便。
    小程序的缺点:
    小程序是依附于微信的,所以很多功能局限于微信团队提供的API,你不好扩展功能。另外小程序不适合开发交互复杂、需求多样的应用,只能考虑原生开发。

  • Hybrid框架
    由于原生WebView控件存在一定的局限性,和Web交互起来有些问题不好处理,于是出现了一些基于原生WebView封装的Hybrid框架,这些框架有一个共同特点:封装了移动端设备(Android、iOS)上最常用的本地API调用,然后以统一的Javascript API形式提供给Web开发者调用。这样一来原生不能解决的问题可以用Web去处理,同时你也可以自己封装原生API,做成一些插件使用。
    比较热门的Hybrid框架有IonicCordovaDCloud
    Ionic:
    Ionic底层打包使用 Cordova,Ionic自带丰富的Ionic UI样式,Ionic使用的是AngularJS前端框架,基于PhoneGap编译平台。
    Ionic拥有丰富的命令操作,可以通过命令行工具快速创建Android和iOS项目,并且也可以编译成Android和iOS平台的应用程序,同时Ionic也支持自定义编写Android和iOS的插件。
    Cordova:
    Cordova是一个使用HTML,CSS和JS这些前端语言去构建移动应用的平台。
    Cordova提供了一些操作原生设备有关的API,通过这些API,可以使用JavaScript去访问原生的设备的相关功能,例如打开摄像头、打电话、开启传感器等。比如拿Android来说,Cordova是通过addJavascriptInterface(Android Webview的API)和JS Prompt这两种方式来实现JS对于原生 Android API的调用。
    DCloud:
    DCloud:这个是国产的跨平台开发工具平台,里面包含有:HBuilder,HTML5+,MUI,uni-app,wap2app等。HBuilder是一个开发工具,MUI是一个UI框架,HTML5+ App是一种基于HTML、JS、CSS编写的运行于手机端的App。
    HBuilder可以通过扩展的JS API任意调用移动端的原生功能,实现与原生App同样强大的功能和性能,它封装了常用的扩展能力(二维码、分享等),同时通过Native.js把原生API映射成了JS对象,通过JS可以直接调iOS和Android的原生API(通过plus.ios调用iOS原生API,通过plus.android调用Android原生API)。

  • 含有编译转换的框架
    React Native:
    使用JavaScript 和 React 编写移动应用,在 UI方面使用是原生的控件,性能比Hybrid表现要好很多。React Native因为是基于React,它是响应式编程,熟悉React的会很快上手,一次性学习,全平台开发,团队可以为任何平台开发应用,不需要为每个平台学习不同的基础技术。React Native支持热更新也成了很多开发团队的热捧。
    Weex:
    Weex 是一个使用 Web 开发体验来开发高性能原生应用的框架。使用同一套代码就可以构建 Android、iOS 和 Web 应用。Weex 的结构是解耦的,渲染引擎与语法层是分开的,目前主要支持 Vue.js 和 Rax 这两个前端框架。Weex 在 iOS 和 Android 上都实现了一个渲染引擎,并提供了一套基础的内置组件。基于这些组件,你可以用JS封装更多的上层组件。
    Flutter:
    Flutter是谷歌推出的跨平台项目,它的前身是Sky项目,起源于2015年。Sky项目一开始就定位Dart作为开发语言,使用Dart语言开发移动端项目,Sky它不依赖于平台,它的代码可以运行在Android、iOS设备上,真正做到了“一次代码,处处运行”,让你在Android、iOS设备上拥有接近原生的体验。

  • 其他
    Kotlin:
    它利用LLVM来编译到机器码。它主要是基于 LLVM后端编译器(Backend Compiler)来生成本地机器码。Kotlin Native设计初衷是为了支持在非JVM虚拟机平台环境的编程,如 ios、嵌入式平台等。同时支持与 C 互操作。
    Scade:
    Scade是一个跨平台的,支持Android,Apple和Linux的工具。使用Swift的代码库为进行开发,可以构建和部署多个不同平台的应用。Swift代码编译为Android和iOS可执行文件以及静态和动态库,并打包为IAK和ADK文件。通用平台特定的控件直接集成到Scade图形SVG渲染引擎中,Scade标准库提供了大量系统功能,操作系统特定功能作为默认包公开并易于使用,无需包装或使用外部功能接口。
;