Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
unidocs-uni-app-x-zh
提交
08ab8032
U
unidocs-uni-app-x-zh
项目概览
DCloud
/
unidocs-uni-app-x-zh
通知
144
Star
2
Fork
33
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
9
列表
看板
标记
里程碑
合并请求
11
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
unidocs-uni-app-x-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
9
Issue
9
列表
看板
标记
里程碑
合并请求
11
合并请求
11
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
08ab8032
编写于
12月 09, 2024
作者:
W
wanganxp
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
x
上级
db76bdce
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
54 addition
and
6 deletion
+54
-6
docs/api/dialog-page.md
docs/api/dialog-page.md
+1
-0
docs/api/get-current-pages.md
docs/api/get-current-pages.md
+4
-0
docs/api/get-element-by-id.md
docs/api/get-element-by-id.md
+3
-2
docs/api/get-univerify-manager.md
docs/api/get-univerify-manager.md
+1
-1
docs/tutorial/idref.md
docs/tutorial/idref.md
+4
-3
docs/uts/README.md
docs/uts/README.md
+41
-0
未找到文件。
docs/api/dialog-page.md
浏览文件 @
08ab8032
...
@@ -21,6 +21,7 @@ dialogPage和主page的区别:
...
@@ -21,6 +21,7 @@ dialogPage和主page的区别:
-
dialogPage的背景固定为透明、大小为铺满应用。蒙层由页面内部实现,蒙层颜色、是否响应点击,均由页面内部处理。如果是模态,蒙层不应该允许点击;非模态,则点击蒙层应关闭dialogPage
-
dialogPage的背景固定为透明、大小为铺满应用。蒙层由页面内部实现,蒙层颜色、是否响应点击,均由页面内部处理。如果是模态,蒙层不应该允许点击;非模态,则点击蒙层应关闭dialogPage
-
dialogPage不使用uni.navigatorTo等路由API,而是单独提供了
`openDialogPage`
和
`closeDialogPage`
-
dialogPage不使用uni.navigatorTo等路由API,而是单独提供了
`openDialogPage`
和
`closeDialogPage`
-
dialogPage不影响页面栈和路由地址,在getCurrentPages里不能直接得到dialogPage(需在UniPage对象通过getDialogPages获取)
-
dialogPage不影响页面栈和路由地址,在getCurrentPages里不能直接得到dialogPage(需在UniPage对象通过getDialogPages获取)
-
因为dialogPage不进入主页面栈,那么
`uni.getElementById`
是无法获取到dialogPage内的元素的。因为uni这个全局API是获取栈顶元素。如果想获取指定页面的元素,需获取到指定页面的UniPage对象,在这个对象上使用.getElementById方法。如果想获取当前dialogPage页面的元素,应该使用
`this.$page.getElementById()`
。
-
dialogPage在Android上并不是一个activity,而是一个全屏view,它和主page所属同一个activity。
-
dialogPage在Android上并不是一个activity,而是一个全屏view,它和主page所属同一个activity。
-
dialogPage不响应iOS侧滑返回,即disableSwipeBack默认值为true。响应Android的back键和back手势,可通过dialogPage onBackPress生命周期控制是否阻止Android的back键和back手势关闭dialogPage。
-
dialogPage不响应iOS侧滑返回,即disableSwipeBack默认值为true。响应Android的back键和back手势,可通过dialogPage onBackPress生命周期控制是否阻止Android的back键和back手势关闭dialogPage。
-
dialogPage默认不影响调用页面或其parentPage的show、hide生命周期。如需影响,比如弹出全屏界面时,需手动设置triggerParentHide
-
dialogPage默认不影响调用页面或其parentPage的show、hide生命周期。如需影响,比如弹出全屏界面时,需手动设置triggerParentHide
...
...
docs/api/get-current-pages.md
浏览文件 @
08ab8032
...
@@ -6,6 +6,10 @@ HBuilderX 4.31+,强化了页面对象,新增了UniPage对象。getCurrentPag
...
@@ -6,6 +6,10 @@ HBuilderX 4.31+,强化了页面对象,新增了UniPage对象。getCurrentPag
UniPage对象强化了开发者对页面的管理功能,并且支持在uts插件中使用。
UniPage对象强化了开发者对页面的管理功能,并且支持在uts插件中使用。
`getCurrentPages()`
获取的是主页面栈,不能直接获取
[
dialogPage
](
./dialog-page.md
)
页面。拿到主页面UniPage对象后,可以再通过getDialogPages()方法获取这个主页面的子弹窗页面栈。
通过
`this.$page`
,是另一种快速获取当前页面对象的方式。它得到的不是一个页面数组,而是一个具体的当前页面。并且这种方式支持主页面,也支持dialogPage。
<!-- UTSAPIJSON.getCurrentPages.compatibility -->
<!-- UTSAPIJSON.getCurrentPages.compatibility -->
<!-- UTSAPIJSON.getCurrentPages.param -->
<!-- UTSAPIJSON.getCurrentPages.param -->
...
...
docs/api/get-element-by-id.md
浏览文件 @
08ab8032
...
@@ -10,8 +10,9 @@ uni是全局api,本方法获取的元素,是页面栈栈顶(不包括 dial
...
@@ -10,8 +10,9 @@ uni是全局api,本方法获取的元素,是页面栈栈顶(不包括 dial
如需寻找特定页面上的Element,应使用
[
UniPage对象的getElementById方法
](
../api/get-current-pages.md#getelementbyid
)
如需寻找特定页面上的Element,应使用
[
UniPage对象的getElementById方法
](
../api/get-current-pages.md#getelementbyid
)
如果不确定当前页面是不是在页面栈顶,则推荐使用ref方式,
`this.$refs`
可以和当前代码调用的页面绑定。
\
而获取当前页面对象的方法,则是
`this.$page`
,这个方式可以获取到dialogPage页面,那么通用的、在当前页面获取UniElement的方式是:
`this.$page.getElementById`
与页面绑定的获取元素的方式是
`this.$refs`
获取的对象再进一步as为element。
[
详见
](
../tutorial/idref.md#ref方式
)
另一种与页面绑定的获取元素的方式是
`this.$refs`
获取的组件对象再进一步as为element。
[
详见
](
../tutorial/idref.md#ref方式
)
<!-- UTSAPIJSON.getElementById.param -->
<!-- UTSAPIJSON.getElementById.param -->
...
...
docs/api/get-univerify-manager.md
浏览文件 @
08ab8032
...
@@ -282,7 +282,7 @@ uvue页面放置好上述5个UniElement后,在页面的登录按钮点击事
...
@@ -282,7 +282,7 @@ uvue页面放置好上述5个UniElement后,在页面的登录按钮点击事
登录成功后通过
`uni.navigateBack()`
或
`uni.closeDialogPage()`
等方式关闭授权页。
登录成功后通过
`uni.navigateBack()`
或
`uni.closeDialogPage()`
等方式关闭授权页。
hello uni-app x里有完整的自定义登录的示例代码,该示例中:
hello uni-app x里有完整的自定义登录的示例代码,该示例中:
1.
首先在
[
预登陆页面
](
https://gitcode.net/dcloud/hello-uni-app-x/-/blob/alpha/pages/API/get-univerify-manager/get-univerify-manager.uvue
)
获取运营商返回的4项内容。点击自定义一键登陆后弹出
dialogPage,并通过页面地址传参方式,将4项内容传给自定义登录
页面。
1.
首先在
[
预登陆页面
](
https://gitcode.net/dcloud/hello-uni-app-x/-/blob/alpha/pages/API/get-univerify-manager/get-univerify-manager.uvue
)
获取运营商返回的4项内容。点击自定义一键登陆后弹出
[
dialogPage
](
./dialog-page.md
)
,并通过页面地址传参方式,将4项内容传给自定义登录页面。实际开发中,你可以使用dialogPage,也可以使用一个普通
页面。
2.
在
[
自定义一键登陆页面
](
https://gitcode.net/dcloud/hello-uni-app-x/-/blob/alpha/pages/API/get-univerify-manager/univerify-custom-page.uvue
)
,按规范放置合适的UniElement,点击登录后调用
`customLogin`
方法。登录成功后调用
`uni.closeDialogPage()`
关闭。
2.
在
[
自定义一键登陆页面
](
https://gitcode.net/dcloud/hello-uni-app-x/-/blob/alpha/pages/API/get-univerify-manager/univerify-custom-page.uvue
)
,按规范放置合适的UniElement,点击登录后调用
`customLogin`
方法。登录成功后调用
`uni.closeDialogPage()`
关闭。
## Tips
## Tips
...
...
docs/tutorial/idref.md
浏览文件 @
08ab8032
...
@@ -83,9 +83,10 @@ uni-app x提供了[uni.getElementById](../api/get-element.md)等多种方法获
...
@@ -83,9 +83,10 @@ uni-app x提供了[uni.getElementById](../api/get-element.md)等多种方法获
通用的元素操作方法,比如getAttribute、setStyle,在Element上就可以操作。
通用的元素操作方法,比如getAttribute、setStyle,在Element上就可以操作。
获取Element有很多方法,全局方法
[
uni.getElementById
](
../api/get-element.md
)
、
[
UniPage的getElementById
](
../api/get-current-pages.md#getelementbyid
)
获取Element有很多方法,
1.
[
uni.getElementById
](
../api/get-element.md
)
获取栈顶页面的元素(注意无法获取dialogPage页面的元素)
还可以通过this.refs获取到vue实例然后as为Element。
[
见下
](
#ref方式
)
2.
[
UniPage的getElementById
](
../api/get-current-pages.md#getelementbyid
)
获取指定页面的元素。通过
`this.$page.getElementById`
可以获取当前页面的元素。
3.
还可以通过this.refs获取到vue实例然后as为Element。
[
见下
](
#ref方式
)
UniVideoElement 继承自 UniElement,拥有video专用的一批方法。
UniVideoElement 继承自 UniElement,拥有video专用的一批方法。
...
...
docs/uts/README.md
浏览文件 @
08ab8032
...
@@ -384,3 +384,44 @@ let a:number = 1 //行尾可以不加分号
...
@@ -384,3 +384,44 @@ let a:number = 1 //行尾可以不加分号
let
b
:
boolean
=
false
;
//行尾可以加分号
let
b
:
boolean
=
false
;
//行尾可以加分号
let
c
:
number
=
3
;
let
d
:
number
=
4
// 同行多语句需要用分号分割
let
c
:
number
=
3
;
let
d
:
number
=
4
// 同行多语句需要用分号分割
```
```
## 设计思路@design
uts这门语言不是为了发明中国自己的语言而诞生的,它是为了寻找跨平台开发的最佳方案。
跨平台有几种做法:
1.
利用一种各平台都支持的语言,比如js。之前的uni-app就是这么做的。
2.
把A平台的语言翻译成B、C、D平台的语言。比如kotlin编译为js。
3.
重新设计一门与各平台无关的语言,独立的规范,较重的运行时。比如dart。还有跨windows、mac、linux的java,也是这种思路。
A翻译B、C、D其实是一条不归路。因为这些语言设计之初就是为了服务它自己的平台,所以A、B、C、D有很多无法兼容的设计,没办法顺畅翻译。想走这条路的产品也大多被扔进了垃圾桶。
**所以如果开发者期待uts完全兼容ts,那就期待错了。ts直接翻译为kotlin、swift是不现实的**
而全新语言,又会有几个问题:
1.
较重的运行时,会增大发行包体积、增加内存消耗、减缓运行性能。
2.
新语言与系统原生语言需要通信,通信耗时会造成性能损失。详见
[
评测
](
../select.md
)
而uts的设计,不是上述3种方案中的某个,也完美的规避了上述3个方案的缺点。
uts是全面了解ts、kotlin、swift、arkts等不同的语言后,全新设计的一套跨平台语言。
它抽象了各个平台语言的共性,保证了跨平台的兼容,比如uts设计了number类型,并且通过编译+运行时的综合方案,在全平台实现了number。
同时uts又支持各平台原生语言的所有特性,比如kotlin的int,只不过这些特性的写法需要写条件编译,因为它们无法跨平台。
由于编译为平台原生语言,所以uts天生没有跨语言通信成本,也不需要新语言较重的运行时,对包体积、内存占用、运行性能的影响非常小。
所以uts被称为最佳的跨平台解决方案。
但不容易兼得的是用户的历史习惯,uts在努力照顾ts开发者的习惯,尽可能贴近ts。
-
只有在编译到浏览器或小程序等js环境时,开发者才能完全使用所有ts特性
-
编译为kotlin和swift时,开发者需要做好准备,学习uts的跨平台约束
## 其他FAQ
-
Q:使用uts,万一uts编译器有bug、干坏事,怎么办?
1.
uts发展已经2年了,已经有上千个项目和插件上线,语言虽然还需要继续完善,但本身不存在影响项目发布的bug。
2.
uts编译后的kt、swift代码,都在uni-app x项目的unpackage目录下,开发者都可以看到,可以放心使用。
-
Q:uts不如js好用
1.
我们承认js的灵活和易用在所有编程语言里名列前茅。如果你认为基于js的uni-app已经能满足你的跨平台需求那也很好。如果你追求原生的性能体验,那么选择uts虽然需要一定的学习和适应成本,但我们相信这个成本比任何其他方案都低。
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录