由于swift编译iOS应用必须依赖xcode,而DCloud的开发者中windows占比高于mac电脑。
我们不能抛弃Windows开发者,所以uni-app x在iOS上提供js和swift双选逻辑层。
| js逻辑层 | swift逻辑层 | |
|---|---|---|
| 主应用开发平台 | windows或mac | 只能mac |
| uvue页面代码 | 可使用js但不能直接调用swift API。swift调用需封装在uts插件中 | 只能调用swift不能使用js |
| uts原生插件开发 | 只能mac | 只能mac |
| uts原生插件使用 | windows下打包后使用,mac下本地直接编译 | windows下打包后使用,mac下本地直接编译 |
| 性能 | 丝滑流畅 | 丝滑流畅 |
也就是uts原生插件作者必须得有mac电脑,普通的App开发者可以没有mac电脑,使用插件也不需要mac电脑,通过云打包即可。
虽然理论上swift逻辑层的性能要高于js逻辑层,但开发者可以放心使用js逻辑层。
uni-app x在iphone上的js逻辑层和原生渲染层的通信经过特殊处理,大幅提升通信效率问题,不再需要bindingX这类技术。
uni-app x的js逻辑层,不是使用webview,而是iOS内置的jscore,渲染层更不是webview,而是纯原生渲染。
uni-app x专门对iOS上jscore和原生视图层的通信做了优化,可以达到良好的效果。
可以体验hello uni-app x的iOS版本,如下2个场景均使用js逻辑层,但都没有通信损耗带来的体验问题
使用js逻辑层有若干好处:
如果开发者不想使用js驱动,或者弱化js在应用中的占比,方案就是跳开vue、在uts插件中直接操作原生DOM。
uni-app x的所有原生UI,除了使用vue框架构建,还可以使用DOM API构建。参考UniELement文档
在uts插件中也可以使用DOM API,因为uts插件是编译为swift的,所以这样实现了纯原生的驱动。
使用uts插件,虽然编译为了swift,但要注意就只能在mac电脑下开发,且不能有开发热刷新体验。
由于蒸汽模式后,js逻辑层的渲染速度都已经超过原生。那么Swift uvue意义就不大了。
对于极高频的通信需求,如需免js通信,那么推荐使用uts插件方式操作UI,仍然可以通过一套uts代码跨平台复用的更新UI,只是无法使用vue。