Native App原生应用是使用各自平台的原生语言开发的,因此具有最好的性能和用户体验,但开发和发布成本也是最高的。常用的开发技术包括Swift、OC和Java。
Web App是指运行在移动端浏览器的网站应用,通常使用单页应用(SPA)模式开发。Web App的开发和发布成本最低,但性能最差。常用的开发技术包括VueJS和ReactJS。
Hybrid App介于Web App和Native App之间,使用JS编写逻辑并通过JSBridge调用Native API,使用HTML+CSS编写界面,并由WebView渲染界面。Hybrid App具有跨平台效果,但开发和发布成本介于Native App和Web App之间。

React Native和Weex是两款UI框架,分别由Facebook和阿里开发并开源。它们使用JS编写逻辑,底层自动把JS代码解析成对应平台(iOS、Android)的原生API,调用Native的API绘制原生UI,即原生渲染界面。这使得性能好于Hybrid App。React Native使用JSX语言编写界面,布局使用Flexbox。Weex使用VueJS编写界面,布局也使用Flexbox。两者都支持热更新,且具有write once, run anywhere的思想。
Flutter是由Google开发并开源的一套UI框架,使用Dart语言编写逻辑和界面。Flutter使用自己的渲染引擎绘制Widget,即Widget渲染界面,Dart代码通过AOT编译为平台的原生代码,所以Flutter可以直接与平台通信,不需要JS引擎的桥接。Flutter的Widget是不可变的,仅支持一帧,并且在每一帧上不会直接更新,要更新必须使用Widget的状态。Flutter APP是除了Native APP以外性能最好的,但不支持热更新。
Uni-App是DCloud公司开发的一款基于VueJS的跨端框架,可以开发小程序、App和H5应用。Uni-App使用混合渲染、Weex原生渲染和WebView渲染,小程序和App-Vue页面属于混合渲染,App-nvue页面全部使用Weex原生渲染,H5全部使用WebView渲染。Uni-App还提供原生插件,包括原生组件和原生模块,可以通过JS调用。Uni-App开发App性能足够好,而且具有省成本和完善的生态系统的优点。
选择不同的开发框架取决于具体需求和预算。如果需要最好的性能和用户体验,并且预算充足,那么原生应用是最佳选择。如果预算有限,但需要跨平台效果,那么React Native或Weex是不错的选择。如果需要具有省成本和完善生态系统的优点,那么Uni-App是一个不错的选择。