Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
unidocs-zh
提交
905848c2
unidocs-zh
项目概览
DCloud
/
unidocs-zh
通知
2956
Star
102
Fork
746
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
79
列表
看板
标记
里程碑
合并请求
57
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
unidocs-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
79
Issue
79
列表
看板
标记
里程碑
合并请求
57
合并请求
57
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
905848c2
编写于
10月 26, 2023
作者:
W
wanganxp
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
x
上级
f8ed6e4d
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
124 addition
and
6 deletion
+124
-6
docs/uni-app-x/_sidebar.md
docs/uni-app-x/_sidebar.md
+1
-0
docs/uni-app-x/component/text.md
docs/uni-app-x/component/text.md
+2
-3
docs/uni-app-x/dom/element.md
docs/uni-app-x/dom/element.md
+2
-0
docs/uni-app-x/readme.md
docs/uni-app-x/readme.md
+1
-1
docs/uni-app-x/tutorial/idref.md
docs/uni-app-x/tutorial/idref.md
+113
-0
docs/uts/README.md
docs/uts/README.md
+0
-1
docs/uts/data-type.md
docs/uts/data-type.md
+5
-1
未找到文件。
docs/uni-app-x/_sidebar.md
浏览文件 @
905848c2
...
...
@@ -4,6 +4,7 @@
*
[
与js开发的差别
](
tutorial/codegap.md
)
*
[
request联网教程
](
tutorial/request.md
)
*
[
全局变量与状态管理
](
tutorial/store.md
)
*
[
几种组件标记的概念澄清
](
tutorial/idref.md
)
*
编译器
*
[
概述
](
compiler/README.md
)
*
[
条件编译
](
https://uniapp.dcloud.net.cn/tutorial/platform.html
)
...
...
docs/uni-app-x/component/text.md
浏览文件 @
905848c2
...
...
@@ -6,8 +6,6 @@
虽然app-uvue中写在view的text区域的文字,也会被编译器自动包裹一层text组件,看起来也可以使用。但这样会造成无法修改该text文字的样式,详见uvue的
[
样式不继承
](
uni-app-x/css/README.md#stylenoextends
)
章节。
**注意:**
暂不支持
[
字符实体
](
https://developer.mozilla.org/zh-CN/docs/Glossary/Entity
)
。
<!-- UTSCOMJSON.text.attrubute -->
<!-- UTSCOMJSON.text.event -->
...
...
@@ -29,4 +27,5 @@ app-nvue中,text组件不能嵌套。
<!-- UTSCOMJSON.text.reference -->
## Bug & Tips@tips
-
**tip**
: app-uvue的selectable开启后,仅支持全部文字复制,不支持自由调整光标选择文字。如需自由选择文字,请使用
[
rich-text组件
](
rich-text.md
)
。
-
app-uvue不支持
[
HTML字符实体
](
https://developer.mozilla.org/zh-CN/docs/Glossary/Entity
)
。
-
app-uvue的selectable开启后,仅支持全部文字复制,不支持自由调整光标选择文字。如需自由选择文字,请使用
[
rich-text组件
](
rich-text.md
)
。
\ No newline at end of file
docs/uni-app-x/dom/element.md
浏览文件 @
905848c2
...
...
@@ -242,3 +242,5 @@ getAttribute返回值从HBuilderX 3.93起,调整为string类型,不要使用
<!-- CUSTOMTYPEJSON.Element.methods.takeSnapshot.compatibility -->
<!-- CUSTOMTYPEJSON.Element.methods.takeSnapshot.tutorial -->
截图的示例代码参考
[
hello uni-app x
](
https://gitcode.net/dcloud/hello-uni-app-x/-/blob/alpha/pages/API/element-takesnapshot/element-takesnapshot.uvue
)
\ No newline at end of file
docs/uni-app-x/readme.md
浏览文件 @
905848c2
...
...
@@ -153,7 +153,7 @@ uni-app x 一期,只包括常用的组件和API。
-
picker:可改用picker-view
-
canvas:目前没有完整的canvas组件,但
*
每个view,都提供了
[
draw API
](
dom/drawablecontext.md
)
,可以高性能的画各种形状、写字。
*
关于截图,无需像webview那样通过canvas中转,view
会直接提供截图方案
。
*
关于截图,无需像webview那样通过canvas中转,view
直接提供截图方案,
[
takesnapshot
](
dom/element.md#takesnapshot
)
。
*
使用web-view中的canvas也是一种方案,uvue页面里的web-view组件可以和uvue页面里的uts代码双向通信。比如生成二维码,可以由web-view组件来渲染,复用web生态的库
*
当然后期uvue中也会补充正式的canvas组件
-
waterfall/grid-view:会补充
...
...
docs/uni-app-x/tutorial/idref.md
0 → 100644
浏览文件 @
905848c2
# 组件标志
开发者会遇到很多与组件标志有关的概念:id、ref、Element、NodeRef、context、ComponentPublicInstance...
上述概念,其实都是为了给组件一个标记,通过标记拿到组件的上下文对象,然后操作这个对象的方法。
但因为平台不同,制造了不同的概念。id在web和小程序中存在,ref是vue的概念。uni-app中这些皆而有之。
我们以video为例,解释这些概念的相同和差别之处。
## web开发中
### 内置html标签
html内置标签有id属性,通过document.getElmenetById("")可以返回一个Element。可以进一步调用Element的方法
```
html
<video
id=
"vid"
src=
"uni.mp4"
></video>
<script>
document
.
getElementById
(
"
vid
"
).
play
()
//js写法
(
document
.
getElementById
(
"
vid
"
)
as
HTMLVideoElement
).
play
();
//ts写法。只有HTMLVideoElement才有play方法
</script>
```
### vue自定义组件@vuecomponent
vue框架中组件有ref属性,通过this.refs可以返回一个组件实例ComponentPublicInstance。可以进一步调用组件的方法。
对于html内置元素,在web中一般不通过ref获取。ref更多是服务于自定义的vue组件。
假使有一个vue组件,其有一个方法getSome(),那么用法是:
\
template区:
```
html
<component1
ref=
"c1"
></component1>
```
scrip区:
```
js
this
.
$refs
.
c1
.
getSome
()
//js写法
this
.
$refs
[
"
c1
"
].
getSome
()
//与上一行等价
(
this
.
$refs
[
"
c1
"
]
as
ComponentPublicInstance
).
getSome
()
//ts或uts写法,必须明确类型才能调用其方法和属性
```
## 小程序中
### 小程序内置组件
小程序的内置组件有id属性,有多种方式获取组件上下文对象:
1.
通过uni.createXXXContext来获取,比如uni.createVideoContext()
template区:
```
html
<video
id=
"vid"
src=
"uni.mp4"
></video>
```
scrip区:
```
js
uni
.
createVideoContext
(
'
vid
'
).
play
()
```
2.
通过uni.createSelectorQuery(),传入选择器,拿到返回的NodesRef,然后再.context,异步获取到组件的上下文对象
```
js
uni
.
createSelectorQuery
().
select
(
'
.the-video-class
'
).
context
(
function
(
res
){
console
.
log
(
res
.
context
)
// 节点对应的 Context 对象。如:选中的节点是 <video> 组件,那么此处即返回 VideoContext 对象
}).
exec
()
```
### vue自定义组件
uni-app编译到小程序时,vue组件的用法与web相同,具体
[
见上
](
#vuecomponent
)
。
## uni-app x中
uni-app x中,web、小程序、vue这3类概念都支持,所以id、ref、Element、NodeRef、context、ComponentPublicInstance这些概念都存在。
分为如下几类:
### 内置组件
内置组件都支持Element。
为了与小程序api拉齐,也有部分组件同时支持context,如video。
不涉及小程序api拉齐的一些组件未提供context,比如
`<unicloud-db>`
组件只有Element。
#### Element方式
uni-app x提供了
[
uni.getElementById
](
../api/get-element.md
)
方法,返回的是
[
Element
](
../dom/element.md
)
类型。
通用的元素操作方法,比如getAttribute、setStyle,在Element上就可以操作。
UniVideoElement 继承自 Element,拥有video专用的一批方法。
template区:
```
html
<video
id=
"vid"
src=
"uni.mp4"
></video>
```
script区:
```
uts
(uni.getElementById("vid") as UniVideoElement).play() //注意没有document对象,getElementById方法在uni下。务必确保vid存在,否则as会崩溃
uni.getElementById<UniVideoElement>("vid")!.play() //泛型写法
```
#### context方式
script区:
```
uts
uni.createVideoContext("vid")!.play()
```
#### NodeRef方式
uni-app x 虽然支持
`uni.createSelectorQuery()`
API,传入选择器,可以拿到返回的NodesRef。但无法继续获取.context子对象。无法通过这种方式拿到context。
#### ref方式
其实this.$refs获取到的内置组件,通过as也可以转换为Element。但一般ref用于vue自定义组件。
script区:
```
js
(
this
.
$refs
[
'
vid
'
]
as
UniVideoElement
).
play
();
//但一般ref用于vue自定义组件
```
### vue自定义组件
uni-app x中vue组件的用法与web相同,具体
[
见上
](
#vuecomponent
)
。
\ No newline at end of file
docs/uts/README.md
浏览文件 @
905848c2
...
...
@@ -85,7 +85,6 @@ str = "hello world"; // 报错,不允许重新赋值
*
编译至 Kotlin 平台时,等同于 Kotlin 平台的 var(允许重新赋值)
-
swift 中 let 是定义常量,而 uts 和 ts 中,let 是定义变量。注意勿混淆。
-
类型定义的冒号,左右可以有一个空格,也可以没有空格。
`let str:string`
和
`let str : string`
和
`let str :string`
和
`let str: string`
都是合法的。
-
联合类型仅支持
[
|null
](
data-type.md#null
)
(即可为空) 和
[
字面量联合类型
](
data-type.md#literal-union-type
)
。不支持其他方式的联合类型。
### 变量命名规则
...
...
docs/uts/data-type.md
浏览文件 @
905848c2
...
...
@@ -1637,4 +1637,8 @@ HBuilder支持给变量定义特殊值域string类型,这些类型在HBuilder
## 联合类型
目前uts支持的
目前uts支持的联合类型有限:
-
支持
[
|null
](
#null
)
(即可为空)
-
[
字面量联合类型
](
#literal-union-type
)
不支持其他方式的联合类型。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录