之前的答案不大严谨,我再更新下:uni-app 提供了两种模式,一种是题主说的“内嵌网页”,通过安卓本身的浏览器视图组件 webview 实现,是相对传统的 hybird 方案,好处是兼容性好;还有一种比较新的模式就是 nvue 引擎渲染,好处是性能相对高内嵌网页的方案不用多说要理解 nvue 的跨平台方案,首先要了解对应的平台应用是如何运作的以安卓为例,一个应用的界面,可以通过 xml 文件描述,那只需要把 DOM结构 转换为对应的 xml标签 不就能实现 UI复现 了吗,比如一个 div 可以对应安卓的各种布局容器(比如线性布局、相对布局);再比如 img 可以变为 图片视图组件。当然 uniapp 主要是针对 vue组件 ,但也大同小异同理,逻辑层的 js 代码也可以转变为 java 或者 swift 代码,最终通过 Android Studio 或 XCode 打包为对应平台的应用
uni-app 打包成apk时,会根据不同的渲染引擎生成页面放进apk基座。如果是 vue 页面的话,还是通过 webview 实现(类似于微信小程序);如果是 nvue 页面,则会通过weex实现(大致方案也就是楼上所说的,此处就不再赘述)。另外,uni-app 中的各种原生操作API是在apk基座中通过 Java/Kotlin 实现,页面端与基座端通信以实现调用。
之前的答案不大严谨,我再更新下:
uni-app 提供了两种模式,一种是题主说的“内嵌网页”,通过安卓本身的浏览器视图组件
webview
实现,是相对传统的hybird
方案,好处是兼容性好;还有一种比较新的模式就是nvue
引擎渲染,好处是性能相对高内嵌网页的方案不用多说
要理解
nvue
的跨平台方案,首先要了解对应的平台应用是如何运作的以安卓为例,一个应用的界面,可以通过
xml
文件描述,那只需要把 DOM结构 转换为对应的 xml标签 不就能实现UI复现
了吗,比如一个div
可以对应安卓的各种布局容器(比如线性布局、相对布局);再比如img
可以变为 图片视图组件。当然uniapp
主要是针对 vue组件 ,但也大同小异同理,逻辑层的
js
代码也可以转变为java
或者swift
代码,最终通过Android Studio
或XCode
打包为对应平台的应用