uniapp在移动开发中的使用

uniapp在移动开发中的使用

原生开发

优点: 用户体验好,性能好,兼容性强(适配设备,系统版本) 技术市场成熟
接入SDK方便容易,没有政策风险(App Store)
缺点: 开发成本高,平台单一,更新麻烦,不利于APP的动态化

Web 应用

优点: 支持设备广泛,较低的开发成本,可即时上线,无内容限制,随时更新
缺点: 用户体验差,要求联网才能使用,对手机功能有限制(摄像头、GPS等)

混合应用

优点: 享有原生开发优势(套用原生的外壳), 动态性好,消除差异化
缺点: 性能稍慢(需要连接网络),技术还不是很成熟,不可预知的问题

JSpatch 用js写APP,轻量方便简单易用,政策风险。在这之前主要有少量使用lua修复bug

跨平台技术百家齐鸣

对比层面 React-Native WEEX Flutter
支持平台 安卓iOS 安卓iOS web 安卓 iOS
实现技术 JavaScript JavaScript 原生编码渲染
引擎 JavaScriptCore JavaScriptCore(iOS)/ V8(安卓) Flutter Engine
编程语言 React Vue.js Dart
bundle大小 单一、较大 较小 直接就是原生工程
框架程度 较重 较轻

React-Native

React模板JSX学习使用有一定的成本,框架相对较重,native也需要较多代码以支持其运行,学习成本相对较高,容易出错,出现问题难解决, 许多人连项目都还没起步,环境的都没整好: 问题 热更新收费 reactnative热更新方案
混合开发没得官方文档,reactnative混合开发

flutter 为跨平台而生

flutter采用dart作为开发语言,学习成本很高,是一套全新的体系,优势体现在跨平台,通过调用OpenGL库调用系统API渲染,性能和原生相当,一次代码多端运行,build之后就是原生工程,支持混合开发等,但是问题相当较多,不易解决。
官方在原生项目中集成flutter
热更新暂不支持

Weex(Vue-Native)是一款轻量级的移动端跨平台动态性技术解决方案。

对无线电商动态化方案的思考(三) · Issue #15 · amfe/article · GitHub

  • 不是一个 HTML5 库或开发框架
  • 不是一套全新的技术
  • 不是为了解决纯 native 开发的体验问题
  • 不是一个以自身为中心的移动应用开发框架

框架够轻,符合需求,满足动态化需要。解决频繁发版,多端统一的问题。 中文文档便于理解。

站在巨人肩膀上的uni-app

基于Weex再封装,修补大量weex的坑,优化许多的使用,丰富大量的轮子
集成方便,交互容易,官方集成教程

// 向宿主App发送事件  
	uni.sendNativeEvent('getuserinfo', {  
	    msg: 'unimp message!!!'  
	}, ret => {  
		if(ret){
		}
	})

/// 小程序向原生发送事件回调方法
/// @param event 事件名称
/// @param data 数据:NSString 或 NSDictionary 类型
/// @param callback 回调数据给小程序
- (void)onUniMPEventReceive:(NSString *)event 
data:(id)data callback:(DCUniMPKeepAliveCallback)callback;

使用Hbuilder作为开发工具,可以按照需要发布成不同的产品,we