
简体中文
由于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电脑下开发,且不能有开发热刷新体验。
目前vue框架还没有swift版本,所以如果使用vue组件,仍然会编译为js。
vue很快会正式推出蒸气模式,这个版本发布后,官方会将这个版本的vue迁移到swift中。这个迁移完成后,开发者使用vue也可以在iOS上编译为纯Swift。 目前想用纯Swift,就不能用vue,而是需要用DOM API在uts插件中操作。