README.md 3.1 KB
Newer Older
雪洛's avatar
雪洛 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
# 编译到小程序端

> 新增于4.35版本

uni-app x 项目在编译到小程序平台时,将部分特性对齐了web与app端,因此和非uni-app x项目编译到小程序端略有差异。

## vue

### 组件启用virtualHost

uni-app x 项目在编译到小程序端时,启用了virtualHost,同时默认启用了[mergeVirtualHostAttributes特性](https://uniapp.dcloud.net.cn/collocation/manifest.html#mp-weixin)

启用virtualHost会让组件在实际渲染时不会额外包裹一层dom节点。

mergeVirtualHostAttributes特性会将组件的 style、class 属性合并到根节点上。

### refs@refs

非 uni-app x 项目使用refs取内置组件引用时会获取到undefined,而 uni-app x 项目会获取到对应的UniElement。

## dom

### UniElement

小程序端逻辑层与是图层分离,导致大多数同步的dom api都不可用。

UniElement在小程序端仅支持如下属性/方法:

- id 元素的id属性
- nodeName 元素的节点名
- tagName 元素的标签名
- style 元素的style对象,可以通过style对象调用style.setProperty方法
- getBoundingClientRectAsync 异步获取元素的布局位置信息
- getAttribute 获取元素的属性值,目前仅支持id、style

雪洛's avatar
雪洛 已提交
36 37 38
**注意**

- 小程序端只有UniElement,不支持UniButtonElement、UniViewElement等类
雪洛's avatar
雪洛 已提交
39 40
- 小程序端在各种事件在target、currentTarget指向未配置id的组件时,event.target、event.currentTarget会返回一个功能缺失的UniElement,仅能访问dataset、offsetTop、offsetLeft属性。
- 小程序端在各种事件在target、currentTarget指向配置了id的组件时,event.target、event.currentTarget会返回一个功能和getElementById一致的UniElement,除了能访问getElementById返回的UniElement的各种属性方法之外,还能访问dataset、offsetTop、offsetLeft属性。
雪洛's avatar
雪洛 已提交
41

雪洛's avatar
雪洛 已提交
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
### 事件

click、tap事件上补充了如下属性,使其表现更像PointerEvent:

```
event.x
event.y
event.clientX
event.clientY
event.pageX
event.pageY
event.screenX
event.screenY
```

## css

### 默认样式

为保证多端统一,uni-app-x编译到小程序端时,内置组件根元素带有一些默认样式,详情参考:[uvue css使用](../css/README.md)

雪洛's avatar
雪洛 已提交
63 64
如果确实不需要ucss的样式覆盖来帮助对齐不同端的显示效果,可以在pages.json的globalStyle或对应的页面style内配置`enableUcssReset`为false来关闭ucss样式重置。参考:[page.json文档](../collocation/pagesjson.md)

雪洛's avatar
雪洛 已提交
65 66 67 68
## skyline

对skyline的支持处于实验阶段。

雪洛's avatar
雪洛 已提交
69
目前编译器会根据页面是否为skyline来决定是否注入ucss样式覆盖,仅webview渲染的页面才会进行ucss样式覆盖。
雪洛's avatar
雪洛 已提交
70 71 72

worklet函数暂不支持写在uvue、uts文件内,推荐从js文件内引用。

雪洛's avatar
雪洛 已提交
73 74 75 76 77
## 其他差异

### 实体字符

uni-app x项目在编译到小程序端时,如果页面内静态的使用了实体字符`>、<、 、 、 、 `则会在最终输出的小程序页面文件中保留这些实体字符,例如` `在微信小程序的wxml文件中仍为` `不会被转为空格, 而非uni-app-x项目` `会转为空格。