混合开发框架
混合开发是在开发App时用原生程序做个壳与用H5做界面,目的是省钱,开发快
这种App由HTML5网站和APP应用客户端 两部份构成
跨平台技术的诞生,跨平台技术 一套代码打开下省钱
五种分类 分别 Web App,Hybrid App,语言编译转换,原生渲染,自绘 UI
Web App
基于Web应用,运行于浏览器,网页加App壳但Web App 主角的心 配角的命 ,性能低体验不好
无法调用原生API,网速慢体验差,没有离线功能,耗流量,用户留存率低
PWA/Progressive Web App
渐进式增强 Web 应用,用多种技术来增强 Web App功能
用 Service Worker + HTTPS +Cache Api + indexedDB 等web 技术实现离线加载和缓存
实现推送和通知,添加到手机的桌面上,用 Service Worker 进行后台同步
PWA是离线,推送,桌面访问,PWA 赋予 Web App 原生的体验,但一直不温不火
原因游览器对 PWA 技术支持不够
Hybrid App
用 HTML5 原生来进行混合开发就是 HybridHybrid App原生 UI 组件用来展示交互复杂和渲染要求高的界面
其他的交给 HTML展示
Hybrid App体验比不上原生
但Hybrid App开发效率高跨平台,对于需要快速试错,快速占领市场的团队Hybrid App 是个不错的选择
后期团队稳定下来后,最好还是要做体验更好的原生 APP 或者使用其他体验更好的跨平台技术
Hybrid 技术很多,比如 PhoneGap,Cordova,Ionic,VasSonic 等
Cordova
Cordova前身 PhoneGap,PhoneGap 面向 Web 开发人员,通过使用 HTML,CSS 和 Javascript构建跨平台 App,Cordova开源,支持的平台有 Android,iOS,Windows,Mac OS X,Electron
Cordova 用 WebView 展示界面,Apache Cordova 维护了名为 Core Plugins 的插件
这些核心插件为 App 提供访问设备功能,如电池,相机,联系人等
Ionic
Ionic Framework 是个开源 UI 工具包,最早的目标是使用 HTML,CSS 和 JavaScript 等 Web 技术开发移动应用程序
Ionic Framework 已与 Angular 正式集成,对 Vue 和 React支持正在开发中
VasSonic
VasSonic 腾讯VAS团队开发,轻量级高性能框架,加速Android 和 iOS 平台运行的 H5VasSonic 服务器的静态或动态网站,兼容 Web 离线资源
VasSonic 自定义url 不是原始网络连接请求索引html,提前或并行请求资源避免等待视图初始化
VasSonic 通过WebKit 或 Blink 内核读取和呈现数据,无需等待数据流结束
微信小程序
开发语言JavaScript,小程序的开发同普通的网页开发运行环境 分成 渲染层和逻辑层
渲染层的界面使用WebView渲染,逻辑层用 JsCore 线程运行JS 脚本
这两个线程的通信会经由微信客户端(Native)中的 JSBridage 做中转,逻辑层发送网络请求也经由 Native 转发
WXML 模板和 WXSS 样式工作在渲染层,JS 脚本工作在逻辑层
微信小程序和App不是竞争关系,是推广渠道,微信小程序的缺点明显,体验无法跟App 相提并论,功能受限于微信,无法进行拓展
微信小程序建立了次级生态,微信说的算,其他对手的发展会受到限制
uni-app
用 Vue开发前端应用的框架,一套代码到iOS、Android、H5、及各种小程序(微信/支付宝/百度/头条/QQ/钉钉)等多个平台
uni-app官方网站 https://uniapp.dcloud.io/
语言编译转换
将某语言编译为平台下二进制文件Xamarin 框架 在 Android 平台是内嵌了 Mono 虚拟机实现的,
在 iOS 平台下是以 AOT 的方式编译为二进制文件的,归到语言编译转换类型
微软Xamarin 是 Mono 项目的一个分支,基于.NET 的跨平台实现的一个开源项目
Xamarin在 iOS 和 Android 刚推出新的功能时,第一时间调用相应的 API
使用 PhoneGap 则需要等待 PhoneGap 封装的新的功能后才可以调用相应的 API
原生渲染
JavaScript开发且由原生控件渲染,代表有 React Native,Weex,快应用React Native 是 Facebook 开源 Web UI 框架, 在原生移动应用平台的衍生产物
底层对 Android 和 iOS 平台的原生代码进行封装,通过JavaScript 编写原生代码
Virtual DOM 是 DOM 在内存中的轻量级表达方式,通过不同的渲染引擎生成不同平台下的 UI
React Native 与原生框架通过 Bridge 进行通信,用 Chrome 浏览器进行调试
JavaScript 代码将运行在 Chrome V8 引擎中,通过 WebSocket 和原生代码进行通信
Weex
阿里开源的移动开发工具兼顾性能与动态性,通过简捷的前端语法写出原生级别的性能,支持 iOS,Android,YunOS 及 Web 等多端部署
Vue.js 和 Rax 这两个前端框架被广泛应用于 Weex页面开发,因此 Weex 支持 Vue 语法和 Rax 语法
而 React Native 只支持 JSX 语法
Weex将编Weex 源码,通过 transformer 转换成 JS Bundle
然后将 JS Bundle 部署在服务器,当接收到终端(Android,Web 端,iOS 端)的 JS Bundle 请求时
将 JS Bundle 下发给终端,在终端中,由 Weex 的 JS Framework 接收和执行 JS Bundle 代码
且执行数据绑定,模板编译等操作,然后输出 JSON 格式的 Virtual DOM,JS Framework 发送渲染指令给 Native
提供 callNative 和 callJS 接口,方便 JS Framework 和 Native 的通信
快应用
由小米,OPPO,VIVO,华为等国内主流厂商成立快应用联盟,以网页的形式开发, 原生渲染的效果体验快应用框架深度集成进各手机厂商的手机操作系统,在操作系统层面形成用户需求与应用服务的无缝连接
快应用JavaScript 开发
React Native 和 Weex 的渲染引擎是集成到框架中的,每个 APP 都打包一份,安装包体积较大,
快应用渲染引擎是集成到 ROM 中的,应用中无需打包,安装包体积小
快应用实现划分为编译时,运行时两个方面,UX 页面源码经过编译时得到 JS,然后经过运行时得到界面 UI
每个页面由 HTML+CSS+JS 组成,编译运行后得到内存中的 DOM 树
多个页面组成一个项目,编译后得到 rpk 文件,最终运行时以应用形态呈现
快应用仍然不温不火,在流量和入口等关键数据都无法与小程序匹敌
自绘 UI
在不同平台实现统一接口的渲染引擎来绘制 UI,不依赖系统原生控件,保证平台UI 一致性自绘 UI 框架的代表有 Qt 和 Flutter
Qt 产生的时间很早, 在 PC 领域发展良好,移动端表现不佳,
Flutter 谷歌的移动 UI 框架,在 Android 和 iOS 上构建高质量的原生用户界面, 前身是谷歌试验项目 Sky
Futter 一切皆 Widget ,除了文本,图片,卡片,输入框,布局方式和动画等都是由 Widget 组成,通过不同类型Widget,实现复杂的界面
Flutter 框架分层设计 的目标是帮助开发者使用更少的代码完成更多工作
Material 层是由 widgets 层的普通 widget 组成的,而 widgets 层本身是通过来自 rendering 层的低级对象构建的
Flutter 基础上开发的框架已经开始出现,这也证明了业界普遍开始认可 Flutter,并开始进行尝试
尊贵的董事大人
英文标题不为空时 视为本栏投稿
需要关键字 描述 英文标题