Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
tomleePHP
uni-app
提交
f150bfaa
U
uni-app
项目概览
tomleePHP
/
uni-app
与 Fork 源项目一致
Fork自
DCloud / uni-app
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
uni-app
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
f150bfaa
编写于
8月 29, 2019
作者:
Q
qiang
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'master' into feat-swiper-transition
上级
2673716c
49bbca87
变更
69
隐藏空白更改
内联
并排
Showing
69 changed file
with
1138 addition
and
666 deletion
+1138
-666
README.md
README.md
+1
-1
docs/api/README.md
docs/api/README.md
+1
-0
docs/api/_sidebar.md
docs/api/_sidebar.md
+71
-69
docs/api/key.md
docs/api/key.md
+16
-16
docs/api/location/location.md
docs/api/location/location.md
+5
-5
docs/api/location/map.md
docs/api/location/map.md
+3
-3
docs/api/location/open-location.md
docs/api/location/open-location.md
+10
-3
docs/api/other/authorize.md
docs/api/other/authorize.md
+11
-9
docs/api/other/getAccountInfoSync.md
docs/api/other/getAccountInfoSync.md
+45
-2
docs/api/other/open-miniprogram.md
docs/api/other/open-miniprogram.md
+12
-7
docs/api/other/report.md
docs/api/other/report.md
+95
-10
docs/api/other/setting.md
docs/api/other/setting.md
+6
-6
docs/api/other/sport.md
docs/api/other/sport.md
+7
-7
docs/api/request/websocket.md
docs/api/request/websocket.md
+5
-49
docs/api/system/barcode.md
docs/api/system/barcode.md
+24
-11
docs/api/system/batteryInfo.md
docs/api/system/batteryInfo.md
+6
-1
docs/api/system/ble.md
docs/api/system/ble.md
+4
-4
docs/api/system/bluetooth.md
docs/api/system/bluetooth.md
+4
-4
docs/api/system/brightness.md
docs/api/system/brightness.md
+11
-11
docs/api/system/capture-screen.md
docs/api/system/capture-screen.md
+4
-4
docs/api/system/clipboard.md
docs/api/system/clipboard.md
+5
-5
docs/api/system/compass.md
docs/api/system/compass.md
+4
-4
docs/api/system/contact.md
docs/api/system/contact.md
+4
-4
docs/api/system/deviceMotion.md
docs/api/system/deviceMotion.md
+2
-1
docs/api/system/ibeacon.md
docs/api/system/ibeacon.md
+4
-4
docs/api/system/memory.md
docs/api/system/memory.md
+4
-4
docs/api/system/vibrate.md
docs/api/system/vibrate.md
+23
-1
docs/api/system/wifi.md
docs/api/system/wifi.md
+3
-2
docs/api/ui/bgcolor.md
docs/api/ui/bgcolor.md
+8
-8
docs/api/ui/intersection-observer.md
docs/api/ui/intersection-observer.md
+1
-7
docs/api/ui/menuButton.md
docs/api/ui/menuButton.md
+8
-8
docs/api/ui/nextTick.md
docs/api/ui/nextTick.md
+4
-3
docs/api/ui/pulldown.md
docs/api/ui/pulldown.md
+9
-9
docs/api/ui/tabbar.md
docs/api/ui/tabbar.md
+8
-8
docs/api/ui/window.md
docs/api/ui/window.md
+5
-1
docs/case.md
docs/case.md
+18
-1
docs/cloud.md
docs/cloud.md
+15
-15
docs/collocation/frame/lifetime.md
docs/collocation/frame/lifetime.md
+15
-0
docs/collocation/manifest.md
docs/collocation/manifest.md
+50
-46
docs/collocation/pages.md
docs/collocation/pages.md
+38
-5
docs/collocation/vue-config.md
docs/collocation/vue-config.md
+50
-50
docs/component/audio.md
docs/component/audio.md
+7
-5
docs/component/barcode.md
docs/component/barcode.md
+3
-3
docs/component/camera.md
docs/component/camera.md
+4
-3
docs/component/canvas.md
docs/component/canvas.md
+1
-1
docs/component/cell.md
docs/component/cell.md
+1
-1
docs/component/cover-view.md
docs/component/cover-view.md
+7
-6
docs/component/editor.md
docs/component/editor.md
+3
-3
docs/component/icon.md
docs/component/icon.md
+1
-1
docs/component/input.md
docs/component/input.md
+3
-3
docs/component/list.md
docs/component/list.md
+1
-1
docs/component/live-player.md
docs/component/live-player.md
+6
-5
docs/component/live-pusher.md
docs/component/live-pusher.md
+5
-4
docs/component/map.md
docs/component/map.md
+6
-5
docs/component/movable-view.md
docs/component/movable-view.md
+8
-8
docs/component/open-data.md
docs/component/open-data.md
+13
-11
docs/component/picker.md
docs/component/picker.md
+3
-3
docs/component/recycle-list.md
docs/component/recycle-list.md
+1
-1
docs/component/refresh.md
docs/component/refresh.md
+3
-3
docs/component/rich-text.md
docs/component/rich-text.md
+6
-6
docs/component/swiper.md
docs/component/swiper.md
+15
-7
docs/component/video.md
docs/component/video.md
+1
-1
docs/component/waterfall.md
docs/component/waterfall.md
+2
-0
docs/component/web-view.md
docs/component/web-view.md
+5
-5
docs/frame.md
docs/frame.md
+214
-4
docs/matter.md
docs/matter.md
+3
-0
docs/quickstart.md
docs/quickstart.md
+5
-3
docs/use-weex.md
docs/use-weex.md
+188
-161
yarn.lock
yarn.lock
+4
-4
未找到文件。
README.md
浏览文件 @
f150bfaa
...
...
@@ -24,7 +24,7 @@
`uni-app`
支持通过
`vue-cli`
命令行、
`HBuilderX`
可视化界面两种方式快速创建项目:
-
[
vue-cli命令行方式
](
https://uniapp.dcloud.io/quickstart?id=_2-通过vue-cli命令行
)
:不限IDE,适合对node熟悉的开发者,扩展阅读:
[
在vscode中开发uni-app
](
https://ask.dcloud.net.cn/article/36286
)
-
[
vue-cli命令行方式
](
https://uniapp.dcloud.io/quickstart?id=_2-通过vue-cli命令行
)
:不限IDE,适合对node熟悉的开发者,扩展阅读:
[
在vscode中开发uni-app
](
https://ask.dcloud.net.cn/article/36286
)
、
[
在 WebStorm 中开发 uni-app
](
https://ask.dcloud.net.cn/article/36307
)
-
[
HBuilderX可视化界面
](
https://uniapp.dcloud.io/quickstart?id=_1-通过-hbuilderx-可视化界面
)
:专用IDE,内置相关环境,开箱即用,开发效率更高。
## 项目案例
...
...
docs/api/README.md
浏览文件 @
f150bfaa
...
...
@@ -250,6 +250,7 @@ function async request () {
|API|说明|
|:-|:-|
|
[
uni.vibrate
](
api/system/vibrate?id=vibrate
)
|使手机发生振动|
|
[
uni.vibrateLong
](
api/system/vibrate?id=vibratelong
)
|使手机发生较长时间的振动|
|
[
uni.vibrateShort
](
api/system/vibrate?id=vibrateshort
)
|使手机发生较短时间的振动|
##### 手机联系人
...
...
docs/api/_sidebar.md
浏览文件 @
f150bfaa
*
基础
*
[
日志打印
](
api/log.md
)
*
[
uni.base64ToArrayBuffer
](
api/base64ToArrayBuffer?id=base64toarraybuffer
)
*
[
uni.arrayBufferToBase64
](
api/arrayBufferToBase64?id=arraybuffertobase64
)
*
[
定时器
](
api/timer.md
)
*
[
日志打印
](
api/log.md
)
*
[
uni.base64ToArrayBuffer
](
api/base64ToArrayBuffer?id=base64toarraybuffer
)
*
[
uni.arrayBufferToBase64
](
api/arrayBufferToBase64?id=arraybuffertobase64
)
*
[
定时器
](
api/timer.md
)
*
[
生命周期
](
api/lifetime.md
)
*
网络
*
[
发起请求
](
api/request/request.md
)
*
[
上传、下载
](
api/request/network-file.md
)
*
[
WebSocket
](
api/request/websocket.md
)
*
[
SocketTask
](
api/request/socket-task.md
)
*
[
mDNS
](
api/request/mDNS.md
)
*
[
SocketTask
](
api/request/socket-task.md
)
*
[
mDNS
](
api/request/mDNS.md
)
*
[
UDP 通信
](
api/request/UDP.md
)
*
路由与页面跳转
*
[
uni.navigateTo
](
/api/router?id=navigateto
)
...
...
@@ -41,8 +41,8 @@
*
[
视频
](
api/media/video.md
)
*
[
视频组件控制
](
api/media/video-context.md
)
*
[
相机组件控制
](
api/media/camera-context.md
)
*
[
直播组件控制
](
api/media/live-player-context.md
)
*
[
富文本
](
api/media/editor-context.md
)
*
[
直播组件控制
](
api/media/live-player-context.md
)
*
[
富文本
](
api/media/editor-context.md
)
*
设备
*
[
系统信息
](
api/system/info.md
)
*
[
内存
](
api/system/memory.md
)
...
...
@@ -56,17 +56,18 @@
*
[
屏幕
](
api/system/brightness.md
)
*
[
用户截屏事件
](
api/system/capture-screen.md
)
*
[
振动
](
api/system/vibrate.md
)
*
[
手机联系人
](
api/system/contact.md
)
*
[
蓝牙
](
api/system/bluetooth.md
)
*
[
低功耗蓝牙
](
api/system/ble.md
)
*
[
iBeacon
](
api/system/ibeacon.md
)
*
[
Wi-Fi
](
api/system/wifi.md
)
*
[
电量
](
api/system/batteryInfo.md
)
*
[
NFC
](
api/system/nfc.md
)
*
[
设备方向
](
api/system/deviceMotion.md
)
*
[
手机联系人
](
api/system/contact.md
)
*
[
蓝牙
](
api/system/bluetooth.md
)
*
[
低功耗蓝牙
](
api/system/ble.md
)
*
[
iBeacon
](
api/system/ibeacon.md
)
*
[
Wi-Fi
](
api/system/wifi.md
)
*
[
电量
](
api/system/batteryInfo.md
)
*
[
NFC
](
api/system/nfc.md
)
*
[
设备方向
](
api/system/deviceMotion.md
)
*
[
Worker
](
api/worder.md
)
*
键盘
*
[
uni.hideKeyboard
](
/api/key?id=hidekeyboard
)
*
[
uni.onKeyboardHeightChange
](
/api/key?id=onkeyboardheightchange
)
*
界面
*
[
交互反馈
](
api/ui/prompt.md
)
*
[
设置导航条
](
api/ui/navigationbar.md
)
...
...
@@ -78,22 +79,22 @@
*
[
字体
](
api/ui/font.md
)
*
[
下拉刷新
](
api/ui/pulldown.md
)
*
[
节点信息
](
api/ui/nodes-info.md
)
*
[
节点布局相交状态
](
api/ui/intersection-observer.md
)
*
[
自定义组件
](
api/ui/nextTick.md
)
*
[
菜单
](
api/ui/menuButton.md
)
*
页面和窗体
*
[
页面
](
api/window/window.md
)
*
[
页面通讯
](
api/window/communication.md
)
*
[
subNVue原生子窗体
](
api/window/subNVues.md
)
*
[
节点布局相交状态
](
api/ui/intersection-observer.md
)
*
[
自定义组件
](
api/ui/nextTick.md
)
*
[
菜单
](
api/ui/menuButton.md
)
*
页面和窗体
*
[
页面
](
api/window/window.md
)
*
[
页面通讯
](
api/window/communication.md
)
*
[
subNVue原生子窗体
](
api/window/subNVues.md
)
*
文件
*
[
uni.saveFile
](
/api/file/file?id=savefile
)
*
[
uni.getSavedFileList
](
/api/file/file?id=getSavedFileList
)
*
[
uni.getSavedFileInfo
](
/api/file/file?id=getSavedFileInfo
)
*
[
uni.removeSavedFile
](
/api/file/file?id=removeSavedFile
)
*
[
uni.getFileInfo
](
/api/file/file?id=getFileInfo
)
*
[
uni.openDocument
](
/api/file/file?id=openDocument
)
*
[
uni.getFileSystemManager
](
/api/file/getFileSystemManager
)
*
绘画
*
[
uni.openDocument
](
/api/file/file?id=openDocument
)
*
[
uni.getFileSystemManager
](
/api/file/getFileSystemManager
)
*
绘画
*
[
uni.createOffscreenCanvas
](
api/canvas/createOffscreenCanvas.md
)
*
[
uni.createCanvasContext
](
api/canvas/createCanvasContext.md
)
*
[
uni.canvasToTempFilePath
](
api/canvas/canvasToTempFilePath.md
)
...
...
@@ -115,16 +116,16 @@
*
[
设置
](
api/other/setting.md
)
*
[
收货地址
](
api/other/choose-address.md
)
*
[
获取发票抬头
](
api/other/invoice-title.md
)
*
[
小程序跳转
](
api/other/open-miniprogram.md
)
*
[
账号信息
](
api/other/getAccountInfoSync.md
)
*
[
生物认证(指纹及人脸识别)
](
api/other/authentication.md
)
*
[
小程序跳转
](
api/other/open-miniprogram.md
)
*
[
账号信息
](
api/other/getAccountInfoSync.md
)
*
[
生物认证(指纹及人脸识别)
](
api/other/authentication.md
)
*
[
运动(计步器)
](
api/other/sport.md
)
*
[
统计
](
api/other/report.md
)
*
[
统计
](
api/other/report.md
)
*
[
卡券
](
api/other/card.md
)
*
[
模板消息
](
api/other/template.md
)
*
[
小程序更新
](
api/other/update.md
)
*
[
调试
](
api/other/set-enable-debug.md
)
*
[
获取第三方平台数据
](
api/other/get-extconfig.md
)
*
[
获取第三方平台数据
](
api/other/get-extconfig.md
)
*
[
广告
](
api/other/advertisement.md
)
<li></li>
<div
class=
"contact-box"
>
...
...
@@ -145,43 +146,44 @@
<div
class=
"contact-item"
>
<img src="//img-cdn-qiniu.dcloud.net.cn/uniapp/doc/qq@2x.png" width="20" height="20"/>
<div
class=
"contact-smg"
>
<div>
官方QQ交流群
</div>
<div>
群26:147867597
<a
target=
"_blank"
href=
"//shang.qq.com/wpa/qunwpa?idkey=28a1a9a3e8f1866ee6a5f2b1caba05039e30d3ae1461e64b2ec31c095fcab951"
>
点此加入
</a></div>
<div>
群35:713420817(2000人已满)
</div>
<div>
群34:530305531(2000人已满)
</div>
<div>
群33:498071674(2000人已满)
</div>
<div>
群32:166188631(500人已满)
</div>
<div>
群31:567471669(500人已满)
</div>
<div>
群30:371046920(500人已满)
</div>
<div>
群29:202965481(500人已满)
</div>
<div>
群28:166188776(2000人已满
</div>
<div>
群27:811363410(2000人已满
</div>
<!-- <div>
群26:147867597(2000人已满)
</div>
-->
<div>
群25:165297000(500人已满)
</div>
<div>
群24:672494800(500人已满)
</div>
<div>
群23:599958679(500人已满)
</div>
<div>
群22:687186952(1000人已满)
</div>
<div>
群21:717019120(2000人已满)
</div>
<div>
群20:165796402(500人已满)
</div>
<div>
群19:165657124(1000人已满)
</div>
<div>
群18:698592271(500人已满)
</div>
<div>
群17:951348804(1000人已满)
</div>
<div>
群16:719211033(1000人已满)
</div>
<div>
群15:516984120(500人已满)
</div>
<div>
群14:465953250(500人已满)
</div>
<div>
群13:699478442(500人已满)
</div>
<div>
群12:884860657(500人已满)
</div>
<div>
群11:296811328(1000人已满)
</div>
<div>
群10:959059626(2000人已满)
</div>
<div>
群9:775128777(500人已满)
</div>
<div>
群8:695442854(500人已满)
</div>
<div>
群7:942061423(500人已满)
</div>
<div>
群6:697264024(2000人已满)
</div>
<div>
群5:731951419(500人已满)
</div>
<div>
群4:942702595(1000人已满)
</div>
<div>
群3:773794803(1000人已满)
</div>
<div>
群2:901474938(1000人已满)
</div>
<div>
群1:531031261(1000人已满)
</div>
<div>
官方QQ交流群
</div>
<div>
群26:147867597
<a target="_blank" href="//shang.qq.com/wpa/qunwpa?id
=28a1a9a3e8f1866ee6a5f2b1caba05039e30d3ae1461e64b2ec31c095fcab951">点此加入
</a></div>
<div>
群35:713420817(2000人已满)
</div>
<div>
群34:530305531(2000人已满)
</div>
<div>
群33:498071674(2000人已满)
</div>
<div>
群32:166188631(500人已满)
</div>
<div>
群31:567471669(500人已满)
</div>
<div>
群30:371046920(500人已满)
</div>
<div>
群29:202965481(500人已满)
</div>
<div>
群28:166188776(2000人已满
</div>
<div>
群27:811363410(2000人已满
</div>
<!-- <div>
群26:147867597(2000人已满)
</div>
-->
<div>
群25:165297000(500人已满)
</div>
<div>
群24:672494800(500人已满)
</div>
<div>
群23:599958679(500人已满)
</div>
<div>
群22:687186952(1000人已满)
</div>
<div>
群21:717019120(2000人已满)
</div>
<div>
群20:165796402(500人已满)
</div>
<div>
群19:165657124(1000人已满)
</div>
<div>
群18:698592271(500人已满)
</div>
<div>
群17:951348804(1000人已满)
</div>
<div>
群16:719211033(1000人已满)
</div>
<div>
群15:516984120(500人已满)
</div>
<div>
群14:465953250(500人已满)
</div>
<div>
群13:699478442(500人已满)
</div>
<div>
群12:884860657(500人已满)
</div>
<div>
群11:296811328(1000人已满)
</div>
<div>
群10:959059626(2000人已满)
</div>
<div>
群9:775128777(500人已满)
</div>
<div>
群8:695442854(500人已满)
</div>
<div>
群7:942061423(500人已满)
</div>
<div>
群6:697264024(2000人已满)
</div>
<div>
群5:731951419(500人已满)
</div>
<div>
群4:942702595(1000人已满)
</div>
<div>
群3:773794803(1000人已满)
</div>
<div>
群2:901474938(1000人已满)
</div>
<div>
群1:531031261(1000人已满)
</div>
</div>
</div>
<div class="contact-item">
...
...
@@ -191,4 +193,4 @@
<img src="https://img-cdn-qiniu.dcloud.net.cn/uniapp/doc/weixin.jpg" width="90" height="90"/>
</div>
</div>
</div>
\ No newline at end of file
</div>
docs/api/key.md
浏览文件 @
f150bfaa
#### uni.hideKeyboard()
#### uni.hideKeyboard()
隐藏软键盘
隐藏软键盘
隐藏已经显示的软键盘,如果软键盘没有显示则不做任何操作。
**平台差异说明**
...
...
@@ -10,8 +10,8 @@
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
|√|√|√|√|x|√|√|
#### uni.onKeyboardHeightChange(CALLBACK)
#### uni.onKeyboardHeightChange(CALLBACK)
监听键盘高度变化
...
...
@@ -19,18 +19,18 @@
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|QQ小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
|HBuilderX 2.2.
2+|x|基础库2.7+|x|x|x|√|
|HBuilderX 2.2.
3+|x|基础库2.7+|x|x|x|√|
**CALLBACK 返回参数**
|参数|类型|说明|
|:-|:-|:-|
|height|Number|键盘高度|
**示例代码**
```
js
uni
.
onKeyboardHeightChange
(
res
=>
{
console
.
log
(
res
.
height
)
})
```
|height|Number|键盘高度|
**示例代码**
```
js
uni
.
onKeyboardHeightChange
(
res
=>
{
console
.
log
(
res
.
height
)
})
```
docs/api/location/location.md
浏览文件 @
f150bfaa
...
...
@@ -67,9 +67,9 @@ uni.getLocation({
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|√|√|√|√|x|
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
QQ小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
:-:|
|√|√|√|√|√|x|
x|
**OBJECT 参数说明**
...
...
@@ -81,8 +81,9 @@ uni.getLocation({
|complete|Function|否|接口调用结束的回调函数(调用成功、失败都会执行)|
**注意**
-
keyword参数,HBuilderX 2.1.4 以后版本支持
-
因平台差异,如果SDK配置百度地图,需要设置keyword,才能显示相关地点
-
nvue下只支持高德地图,不支持百度地图
-
纯nvue项目(manifest中renderer为native),暂不支持此API。可自行基于map组件封装。
**success 返回参数说明**
...
...
@@ -111,4 +112,3 @@ uni.chooseLocation({
-
不同端,使用地图选择时基于的底层地图引擎不一样,如微信小程序和H5是腾讯地图,App是高德地图,详见地图map组件的使用注意事项
-
微信内置浏览器中可使用微信js sdk,
[
详见
](
https://ask.dcloud.net.cn/article/35380
)
-
chooseLocation属于封装型API,开发者若觉得不够灵活,可自行基于原始的map组件进行封装
-
HBuilderX 1.9.2的Android平台chooseLocation失效,请更新到更高版本。
\ No newline at end of file
docs/api/location/map.md
浏览文件 @
f150bfaa
...
...
@@ -3,9 +3,9 @@
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|√|√|√|√|x|
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
QQ小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
:-:|
|√|√|√|√|√|x|
x|
mapContext
...
...
docs/api/location/open-location.md
浏览文件 @
f150bfaa
### uni.openLocation(OBJECT)
使用应用内置地图查看位置。
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|QQ小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
|√|√|√|√|√|√|x|
**OBJECT 参数说明**
|参数名|类型|必填|说明|平台差异说明|
...
...
@@ -38,6 +44,7 @@ uni.getLocation({
-
本API是一个非原子的封装界面,开发者如有定制需求,可自己做页面实现类似功能。
-
H5 端获取定位信息,需要部署在
**https**
服务上,本地预览(localhost)仍然可以使用 http 协议。
-
无 GPS 模块的 PC 设备使用 Chrome 浏览器的时候,位置信息是连接谷歌服务器获取的,国内用户可能获取位置信息失败。
-
纯nvue项目(manifest中renderer为native),App端暂不支持此API。可自行基于map组件封装。
-
``<map>``
组件默认为国测局坐标,调用
``uni.getLocation``
返回结果传递给
``<map>``
组件时,需指定 type 为 gcj02。
-
App 端使用地图组件需要向高德或百度等三方服务商申请SDK资质,获取AppKey,打包时需要在manifest的SDK配置中填写Appkey。在manifest可视化界面有详细申请指南。
-
iOS端 如需使用第三方地图进行导航,需要在 manifest.json 文件内增加
``urlschemewhitelist``
节点,在线打包即可
...
...
@@ -55,6 +62,6 @@ uni.getLocation({
}
}
}
```
-
点击返回也会进入
`fail`
回调中
\ No newline at end of file
```
-
点击返回也会进入
`fail`
回调中
docs/api/other/authorize.md
浏览文件 @
f150bfaa
...
...
@@ -4,9 +4,9 @@
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|x|x|√|x|√|√|
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
QQ小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
:-:|
|x|x|√|x|√|√|
√|
**OBJECT 参数说明**
...
...
@@ -23,14 +23,16 @@
|---|---|---|---|
|scope.userInfo |
[
uni.getUserInfo
](
/api/plugins/login?id=getuserinfo
)
|用户信息||
|scope.userLocation|
[
uni.getLocation
](
/api/location/location?id=getlocation
)
,
[
uni.chooseLocation
](
/api/location/location?id=chooselocation
)
|地理位置||
|scope.
address |
[
uni.chooseAddress
](
/api/other/choose-address
)
|收货地址|
|
|scope.
invoiceTitle|
[
uni.chooseInvoiceTitle
](
/api/other/invoice-title
)
|发票抬头
||
|scope.
userLocationBackground|wx.userLocationBackground|后台定位|微信小程序
|
|scope.
address |
[
uni.chooseAddress
](
/api/other/choose-address
)
|通信地址
||
|scope.record |
[
uni.getRecorderManager
](
/api/media/record-manager?id=getrecordermanager
)
|录音功能||
|scope.writePhotosAlbum |
[
uni.saveImageToPhotosAlbum
](
/api/media/image?id=saveimagetophotosalbum
)
,
[
uni.saveVideoToPhotosAlbum
](
/api/media/video?id=savevideotophotosalbum
)
|保存到相册||
|scope.camera |
[
``<camera />``
](
/component/camera
)
组件 |摄像头 |微信小程序|
|scope.invoice |
[
wx.chooseInvoice
](
https://developers.weixin.qq.com/miniprogram/dev/api/wx.chooseInvoice.html
)
|获取发票|微信小程序|
|scope.writePhotosAlbum |
[
uni.saveImageToPhotosAlbum
](
/api/media/image?id=saveimagetophotosalbum
)
,
[
uni.saveVideoToPhotosAlbum
](
/api/media/video?id=savevideotophotosalbum
)
|保存到相册|头条小程序的返回值是scope.album|
|scope.camera |
[
``<camera />``
](
/component/camera
)
组件,头条下的扫码、拍照、选择相册 |摄像头 ||
|scope.invoice |
[
wx.chooseInvoice
](
https://developers.weixin.qq.com/miniprogram/dev/api/wx.chooseInvoice.html
)
|获取发票|微信小程序、QQ小程序|
|scope.invoiceTitle|
[
uni.chooseInvoiceTitle
](
/api/other/invoice-title
)
|发票抬头|微信小程序、百度小程序、QQ小程序|
|scope.werun |
[
wx.getWeRunData
](
https://developers.weixin.qq.com/miniprogram/dev/api/wx.getWeRunData.html
)
|微信运动步数 |微信小程序|
**代码示例**
```
javascript
...
...
@@ -40,4 +42,4 @@ uni.authorize({
uni
.
getLocation
()
}
})
```
\ No newline at end of file
```
docs/api/other/getAccountInfoSync.md
浏览文件 @
f150bfaa
####
wx
.getAccountInfoSync()
####
uni
.getAccountInfoSync()
获取当前帐号信息,可以返回小程序的Appid。如果使用了微信小程序的云端插件,还可以反馈插件的id和版本
仅微信小程序平台支持,
[
规范详情
](
https://developers.weixin.qq.com/miniprogram/dev/api/wx.getAccountInfoSync.html
)
\ No newline at end of file
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|x|x|√|x|√|x|
**返回值**
**Object**
帐号信息
| 属性 | 类型 | 说明 |
| --- | --- | --- |
| miniProgram | Object| 小程序帐号信息 |
| plugin | Object | 插件帐号信息(仅在插件中调用时包含这一项) |
| appName | string| 智能小程序名称 (仅百度小程序支持) |
| lastAppURL | string| 智能小程序最近一次打开的调起协议 (仅百度小程序支持) |
| scheme | string| 调起协议的协议头 (仅百度小程序支持) |
**miniProgram 的结构**
| 属性 | 类型 | 说明 |
| --- | --- | --- |
| appId | string | 小程序 appId |
**plugin 的结构**
| 属性 | 类型 | 说明 |
| --- | --- | --- |
| appId | string | 插件 appId (百度小程序不支持) |
| version | string | 插件版本号 |
**示例代码**
```
js
const
accountInfo
=
uni
.
getAccountInfoSync
();
console
.
log
(
accountInfo
.
miniProgram
.
appId
);
// 小程序 appId
console
.
log
(
accountInfo
.
plugin
.
appId
);
// 插件 appId
console
.
log
(
accountInfo
.
plugin
.
version
);
// 插件版本号, 'a.b.c' 这样的形式
```
docs/api/other/open-miniprogram.md
浏览文件 @
f150bfaa
...
...
@@ -4,9 +4,12 @@
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|x|x|√|√|√|x|
|App|H5|
[
微信小程序
](
https://developers.weixin.qq.com/miniprogram/dev/api/open-api/miniprogram-navigate/wx.navigateToMiniProgram.html
)
|
[
支付宝小程序
](
https://docs.alipay.com/mini/api/zwi8gx
)
|
[
百度小程序
](
https://smartprogram.baidu.com/docs/develop/api/open_smartprogram/#swan-navigateToSmartProgram/
)
|
[
头条小程序
](
https://developer.toutiao.com/docs/open/navigateToMiniProgram.html
)
|
[
QQ小程序
](
https://q.qq.com/wiki/develop/miniprogram/API/open_port/port_change.html#qq-navigatetominiprogram
)
|
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
|x(见下)|x|√|√|√|√(1.15.0+)|√|
-
App平台打开微信小程序,使用plus.share的
[
launchMiniProgram
](
https://www.html5plus.org/doc/zh_cn/share.html#plus.share.ShareService.launchMiniProgram
)
。注意uni-app不需要plus ready,将plus ready里的代码写到页面的onLoad生命周期即可。使用此功能需在manifest中配置微信分享SDK信息,打包后生效。
-
各小程序平台对跳转到其他小程序有一些限制和规定,需要遵守,具体见各平台文档。
**OBJECT 参数说明**
...
...
@@ -35,15 +38,17 @@ uni.navigateToMiniProgram({
})
```
### uni.navigateBackMiniProgram(OBJECT)
跳转回上一个小程序,只有当另一个小程序跳转到当前小程序时才会能调用成功。
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|x|x|√|√|√|
x
|
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
QQ小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
:-:|
|x|x|√|√|√|
√|√
|
**OBJECT参数说明**
...
...
@@ -63,4 +68,4 @@ uni.navigateBackMiniProgram({
// 返回成功
}
})
```
\ No newline at end of file
```
docs/api/other/report.md
浏览文件 @
f150bfaa
#### 统计
各平台开发方式暂未统一,使用时需注意用
[
条件编译
](
https://uniapp.dcloud.io/platform
)
调用不同平台的代码。
#### 统计
从uni-app 2.2.3起,支持uni统计。一张报表,掌握全端数据。业务介绍详见
[
https://tongji.dcloud.net.cn
](
https://tongji.dcloud.net.cn
)
自定义事件是统计中不可获取的功能。开发者可通过本API自定义上报统计数据,如统计登录、注册、点击某个按钮,我们都可以称之为自定义事件。
##### uni.report( eventName , options)
**参数说明**
|参数 |类型 |描述 |
|--- |--- |--- |
|eventName|String |事件名称,最大长度不超过 255 个字符 |
|options |String 、 Object |事件参数 |
Tips
-
eventName 为 String 类型,并且字符长度必须小于255
-
options 为 String 类型时,字符长度必须小于255
-
options 为 Object 类型时,该对象的值只能为 String 类型
-
字符串支持特殊字符但不包括(英文逗号 , 英文冒号 : 点 .)
-
eventName 为
`title`
时为内容标题上报,用户不能自定义。此时数据会展现在uni统计的首页-内容统计及左侧导航的内容统计中。方便查看内容页数据。
-
用户在使用
`uni.login()`
会执行登录事件,不携带参数。如果如需上报携带具体参数的数据,需要手动调用
`uni.report('login',{...})`
-
用户在使用
`uni.share()`
或触发
`onShareAppMessage`
会执行分享事件,不携带参数。如果如需上报携带具体参数的数据,需要手动调用
`uni.report('share',{...})`
-
用户在使用
`uni.requestPayment()`
会执行支付事件,不携带参数。如果如需上报携带具体参数的数据,需要手动调用
`uni.report('pay_success',{...})`
和
`uni.report('pay_fail',{...})`
**示例**
```
javascript
// 内容统计
// 当 eventName 为 title 时,options 只能为 String 类型
uni
.
report
(
'
title
'
,
'
首页
'
)
// 登录
uni
.
report
(
'
lgoin
'
,{
'
name
'
:
'
uni-app
'
,
'
age
'
:
'
21
'
,
// ...
})
// 分享
uni
.
report
(
'
share
'
,
'
分享
'
)
// 支付成功
uni
.
report
(
'
pay_success
'
,
'
支付成功
'
)
// or
uni
.
report
(
'
pay_success
'
,{
"
订单金额
"
:
'
20元
'
,
"
订单名称
"
:
'
鼠标
'
,
// ...
})
// 支付失败
uni
.
report
(
'
pay_fail
'
,
'
支付失败
'
)
// or
uni
.
report
(
'
pay_fail
'
,{
"
订单金额
"
:
'
20元
'
,
"
订单名称
"
:
'
鼠标
'
,
// ...
})
// 注册
uni
.
report
(
'
register
'
,{
'
name
'
:
'
uni-app
'
,
'
age
'
:
'
21
'
,
// ...
})
// 搜索
uni
.
report
(
'
search
'
,
'
搜索内容
'
)
// or
uni
.
report
(
'
search
'
,{
'
内容
'
:
'
搜索内容
'
})
```
自定义事件上报后,在统计后台的
`事件和转换`
栏目中,可以看到上报的事件情况。
**TIPS:**
-
小程序平台,需将
`tongji.dcloud.net.cn`
配入域名白名单,
[
详见
](
https://ask.dcloud.net.cn/article/36298
)
-
uni统计使用教程:
[
https://ask.dcloud.net.cn/article/36303
](
https://ask.dcloud.net.cn/article/36303
)
除了官方的uni统计,如果开发者还需要调用小程序平台的自定义统计,给小程序的后台上报数据,那么需使用条件编译,在各端调用此自己的API。
##### 微信小程序平台:
-
数据上报:
[
wx.reportMonitor
](
https://developers.weixin.qq.com/miniprogram/dev/api/open-api/report/wx.reportMonitor.html
)
-
数据分析:
[
wx.reportAnalytics
](
https://developers.weixin.qq.com/miniprogram/dev/api/open-api/data-analysis/wx.reportAnalytics.html
)
-
数据分析:
[
wx.reportAnalytics
](
https://developers.weixin.qq.com/miniprogram/dev/api/open-api/data-analysis/wx.reportAnalytics.html
)
##### 支付宝小程序平台:
-
自定义分析数据的上报接口:
[
my.reportAnalytics
](
https://docs.alipay.com/mini/api/report
)
##### 百度小程序平台:
-
数据分析:
[
swan.reportAnalytics
](
https://smartprogram.baidu.com/docs/develop/api/data/#swan-reportAnalytics/
)
##### App平台:
App平台有DCloud统计服务和友盟统计这两种。
-
DCloud统计:
[
https://dcloud.io/unistat.html
](
https://dcloud.io/unistat.html
)
-
友盟统计:
[
开发规范
](
http://www.html5plus.org/doc/zh_cn/statistic.html
)
,
[
配置文档
](
https://ask.dcloud.net.cn/article/74
)
\ No newline at end of file
##### 头条小程序平台:
-
[
reportAnalytics
](
https://developer.toutiao.com/docs/open/reportAnalytics.html
)
##### QQ小程序平台:
-
数据上报:
[
qq.reportMonitor
](
https://q.qq.com/wiki/develop/miniprogram/API/open_port/port_dataup.html
)
-
数据分析:
[
qq.reportAnalytics
](
https://q.qq.com/wiki/develop/miniprogram/API/open_port/port_dataanalysis.html#qq-reportanalytics
)
##### App平台的友盟统计:
-
友盟统计:
[
开发规范
](
http://www.html5plus.org/doc/zh_cn/statistic.html
)
,
[
配置文档
](
https://ask.dcloud.net.cn/article/74
)
docs/api/other/setting.md
浏览文件 @
f150bfaa
...
...
@@ -4,9 +4,9 @@
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|x|x|√|√|√|√|
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
QQ小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
:-:|
|x|x|√|√|√|√|
√|
|属性|类型|必填|说明|
|---|---|---|---|---|
...
...
@@ -35,9 +35,9 @@ uni.openSetting({
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|
|:-:|:-:|:-:|:-:|:-:|
|x|x|√|√|√|
|5+App|H5|微信小程序|支付宝小程序|百度小程序|
头条小程序|QQ小程序|
|:-:|:-:|:-:|:-:|:-:|
:-:|:-:|
|x|x|√|√|√|
√|√|
|属性|类型|必填|说明|
|---|---|---|---|---|
...
...
docs/api/other/sport.md
浏览文件 @
f150bfaa
#### sport 运动
#### sport 运动
此功能为计步器,用于获取手机用户的运动步数。
仅微信小程序平台、App平台支持,各平台开发方式暂未统一,使用时需注意用
[
条件编译
](
https://uniapp.dcloud.io/platform
)
调用不同平台的代码。
-
微信小程序平台:
[
规范详情
](
https://developers.weixin.qq.com/miniprogram/dev/api/open-api/werun/wx.getWeRunData.html
)
-
App 平台:需使用原生插件,详见
[
计步器插件
](
https://ext.dcloud.net.cn/search?q=%E8%AE%A1%E6%AD%A5%E5%99%A8
)
\ No newline at end of file
各平台开发方式暂未统一,使用时需注意用
[
条件编译
](
https://uniapp.dcloud.io/platform
)
调用不同平台的代码。
-
App 平台:需使用原生插件,详见
[
计步器插件
](
https://ext.dcloud.net.cn/search?q=%E8%AE%A1%E6%AD%A5%E5%99%A8
)
-
微信小程序平台:
[
规范详情
](
https://developers.weixin.qq.com/miniprogram/dev/api/open-api/werun/wx.getWeRunData.html
)
-
支付宝小程序平台:
[
规范详情
](
https://docs.alipay.com/mini/api/gxuu7v
)
docs/api/request/websocket.md
浏览文件 @
f150bfaa
...
...
@@ -47,29 +47,15 @@ var socketTask = uni.connectSocket({
如果没有传入 success / fail / complete 参数,则会返回封装后的 Promise 对象:
[
Promise 封装
](
/api/README?id=promise-%E5%B0%81%E8%A3%85
)
**注意事项**
-
网络请求的
``超时时间``
可以统一在
``manifest.json``
中配置
[
networkTimeout
](
/collocation/manifest?id=networktimeout
)
。
-
目前不支持
``ArrayBuffer``
类型的数据收发,可以使用
[
plus-websocket
](
http://ext.dcloud.net.cn/plugin?id=647
)
插件替代。
-
自定义组件模式下是基于
`weex`
的
`v8`
引擎运行,所有
`vue`
页面的
`js`
都是在同一个
`weex`
的
`js`
环境中运行。目前
`weex`
限制一个
`js`
环境中只支持一个
`websocket`
连接,所以导致所有
`vue`
页面只能使用一个
`websocket`
连接。
**临时解决方案:**
- 回退使用非自定义组件模式(不推荐)
- 多个 websocket 在独立的 nvue 页面中使用
- 使用 [plus-websocket](http://ext.dcloud.net.cn/plugin?id=647) 插件替代
后续我们会修改
`weex`
的限制,以支持多个
`websocket`
连接
**注意事项**
-
网络请求的
``超时时间``
可以统一在
``manifest.json``
中配置
[
networkTimeout
](
/collocation/manifest?id=networktimeout
)
。
-
App目前不支持
``ArrayBuffer``
类型的数据收发。可以使用
[
plus-websocket
](
https://ext.dcloud.net.cn/plugin?id=647
)
插件替代。
-
自定义组件模式下所有
`vue`
页面只能使用一个
`websocket`
连接。可以使用
[
plus-websocket
](
https://ext.dcloud.net.cn/plugin?id=647
)
插件替代。
### uni.onSocketOpen(CALLBACK)
监听WebSocket连接打开事件。
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|√|√|√|√|√|
**CALLBACK 返回参数**
|属性|类型|说明|
...
...
@@ -91,12 +77,6 @@ uni.onSocketOpen(function (res) {
### uni.onSocketError(CALLBACK)
监听WebSocket错误。
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|√|√|√|√|√|
**示例代码**
```
javascript
...
...
@@ -114,12 +94,6 @@ uni.onSocketError(function (res) {
### uni.sendSocketMessage(OBJECT)
通过 WebSocket 连接发送数据,需要先
[
uni.connectSocket
](
/api/request/websocket?id=connectsocket
)
,并在
[
uni.onSocketOpen
](
/api/request/websocket?id=onsocketopen
)
回调之后才能发送。
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|√|√|√|√|√|
**OBJECT 参数说明:**
|参数名|类型|必填|说明|
...
...
@@ -161,12 +135,6 @@ function sendSocketMessage(msg) {
### uni.onSocketMessage(CALLBACK)
监听WebSocket接受到服务器的消息事件。
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|√|√|√|√|√|
**CALLBACK 返回参数**
|参数|类型|说明|
...
...
@@ -188,12 +156,6 @@ uni.onSocketMessage(function (res) {
### uni.closeSocket(OBJECT)
关闭 WebSocket 连接。
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|√|√|√|√|√|
**OBJECT 参数说明**
|参数名|类型|必填|说明|
...
...
@@ -207,12 +169,6 @@ uni.onSocketMessage(function (res) {
### uni.onSocketClose(CALLBACK)
监听WebSocket关闭。
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|√|√|√|√|√|
```
javascript
uni
.
connectSocket
({
url
:
'
wss://www.example.com/socket
'
...
...
docs/api/system/barcode.md
浏览文件 @
f150bfaa
...
...
@@ -3,16 +3,16 @@
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|x|√|√|√|√|
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
QQ小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
:-:|
|√|x|√|√|√|√|
√|
**OBJECT 参数说明**
|参数名|类型|必填|说明|平台差异说明|
|:-|:-|:-|:-|:-:|
|onlyFromCamera|Boolean|否|是否只能从相机扫码,不允许从相册选择图片|头条小程序不支持|
|scanType|Array|否|扫码类型,参数类型是数组,二维码是'qrCode',一维码是'barCode',DataMatrix是‘datamatrix’,pdf417是‘pdf417’。|头条小程序不支持|
|onlyFromCamera|Boolean|否|是否只能从相机扫码,不允许从相册选择图片|头条小程序不支持
此参数
|
|scanType|Array|否|扫码类型,参数类型是数组,二维码是'qrCode',一维码是'barCode',DataMatrix是‘datamatrix’,pdf417是‘pdf417’。|头条小程序不支持
此参数,支付宝只支持条码和二维码
|
|success|Function|否|接口调用成功的回调,返回内容详见返回参数说明。||
|fail|Function|否|接口调用失败的回调函数(识别失败、用户取消等情况下触发)||
|complete|Function|否|接口调用结束的回调函数(调用成功、失败都会执行)|
|
...
...
@@ -22,9 +22,9 @@
|参数|说明|平台差异说明|
|:-|:-|:-|
|result|所扫码的内容||
|scanType|所扫码的类型|5+App、微信小程序、百度小程序|
|charSet|所扫码的字符集|5+App、微信小程序、百度小程序|
|path|当所扫的码为当前应用的合法二维码时,会返回此字段,内容为二维码携带的 path。|5+App、微信小程序、百度小程序|
|scanType|所扫码的类型|5+App、微信小程序、百度小程序
、QQ小程序
|
|charSet|所扫码的字符集|5+App、微信小程序、百度小程序
、QQ小程序
|
|path|当所扫的码为当前应用的合法二维码时,会返回此字段,内容为二维码携带的 path。|5+App、微信小程序、百度小程序
、QQ小程序
|
**示例**
...
...
@@ -44,11 +44,24 @@ uni.scanCode({
console
.
log
(
'
条码类型:
'
+
res
.
scanType
);
console
.
log
(
'
条码内容:
'
+
res
.
result
);
}
});
// 调起条码扫描
uni
.
scanCode
({
scanType
:
'
barCode
'
,
success
:
function
(
res
)
{
console
.
log
(
'
条码类型:
'
+
res
.
scanType
);
console
.
log
(
'
条码内容:
'
+
res
.
result
);
}
});
```
**Tip**
-
App端如果想自定义扫码,可参考
[
uni-app中如何使用5+的原生界面控件
](
http://ask.dcloud.net.cn/article/35036
)
和
[
plus.barcode API
](
https://www.html5plus.org/doc/zh_cn/barcode.html
)
-
微信内嵌浏览器运行H5版时,可通过js sdk实现扫码,需要引入一个单独的js,
[
详见
](
https://ask.dcloud.net.cn/article/35380
)
-
点击返回也会进入
`fail`
回调中
\ No newline at end of file
-
App-vue如果想自定义扫码,可参考
[
uni-app中如何使用5+的原生界面控件
](
http://ask.dcloud.net.cn/article/35036
)
和
[
plus.barcode API
](
https://www.html5plus.org/doc/zh_cn/barcode.html
)
-
App-nvue,支持barcode组件,可自定义扫码界面。
[
详见
](
https://uniapp.dcloud.io/component/barcode
)
-
微信小程序自定义扫码界面,可使用camera组件。
[
详见
](
https://uniapp.dcloud.io/component/camera
)
-
App下纯nvue项目(manifest中renderer为native),不支持此API,请使用barcode组件来替代。
-
微信内嵌浏览器运行H5版时,可通过js sdk实现扫码,需要引入一个单独的js,
[
详见
](
https://ask.dcloud.net.cn/article/35380
)
-
在扫码界面点击返回也会进入
`fail`
回调中
-
支付宝小程序不支持
`success`
回调中的
`scanType`
,
`charSet`
,
`path`
docs/api/system/batteryInfo.md
浏览文件 @
f150bfaa
#### 电量
仅微信小程序平台支持,
[
规范详情
](
https://developers.weixin.qq.com/miniprogram/dev/api/wx.getBatteryInfoSync.html
)
\ No newline at end of file
电量API暂未统一,需分平台条件编译编写。
-
微信小程序平台:
[
规范详情
](
https://developers.weixin.qq.com/miniprogram/dev/api/wx.getBatteryInfoSync.html
)
-
百度小程序平台:
[
规范详情
](
https://smartprogram.baidu.com/docs/develop/api/device_battery/#swan-getBatteryInfo/
)
-
支付宝小程序平台:
[
规范详情
](
https://docs.alipay.com/mini/api/nrnziy
)
-
QQ小程序平台:
[
规范详情
](
https://q.qq.com/wiki/develop/miniprogram/API/equipment/ibeacon_battery.html
)
docs/api/system/ble.md
浏览文件 @
f150bfaa
**低功耗蓝牙 API 平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|
|:-:|:-:|:-:|:-:|:-:|
|√|x|√|√|x|
|5+App|H5|微信小程序|支付宝小程序|百度小程序|
头条小程序|QQ小程序|
|:-:|:-:|:-:|:-:|:-:|
:-:|:-:|
|√|x|√|√|x|
x|x|
### uni.writeBLECharacteristicValue(OBJECT)
...
...
@@ -436,4 +436,4 @@ uni.closeBLEConnection({
console
.
log
(
res
)
}
})
```
\ No newline at end of file
```
docs/api/system/bluetooth.md
浏览文件 @
f150bfaa
**蓝牙 API 平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|x|√|√|x|x|
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
QQ小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
:-:|
|√|x|√|√|x|x|
x|
### uni.openBluetoothAdapter(OBJECT)
...
...
@@ -406,4 +406,4 @@ uni.closeBluetoothAdapter({
console
.
log
(
res
)
}
})
```
\ No newline at end of file
```
docs/api/system/brightness.md
浏览文件 @
f150bfaa
...
...
@@ -3,9 +3,9 @@
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|x|√|√|√|x|
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
QQ小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
:-:|
|√|x|√|√|√|x|
√|
**OBJECT 参数说明**
...
...
@@ -32,9 +32,9 @@ uni.setScreenBrightness({
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|x|√|√|√|x|
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
QQ小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
:-:|
|√|x|√|√|√|x|
√|
**OBJECT 参数说明**
...
...
@@ -65,9 +65,9 @@ uni.getScreenBrightness({
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|x|√|√|√|√|
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
QQ小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
:-:|
|√|x|√|√|√|√|
√|
**OBJECT 参数说明**
...
...
@@ -91,5 +91,5 @@ uni.getScreenBrightness({
uni
.
setKeepScreenOn
({
keepScreenOn
:
true
});
```
```
docs/api/system/capture-screen.md
浏览文件 @
f150bfaa
...
...
@@ -4,9 +4,9 @@
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|x|x|√|√|√|x|
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
QQ小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
:-:|
|x|x|√|√|√|x|
√|
**CALLBACK返回参数:**
...
...
@@ -18,4 +18,4 @@
uni
.
onUserCaptureScreen
(
function
()
{
console
.
log
(
'
用户截屏了
'
)
});
```
\ No newline at end of file
```
docs/api/system/clipboard.md
浏览文件 @
f150bfaa
**剪贴板 API 平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|
|:-:|:-:|:-:|:-:|:-:|
|√|x|√|√|√|
|5+App|H5|微信小程序|支付宝小程序|百度小程序|
头条小程序|QQ小程序|
|:-:|:-:|:-:|:-:|:-:|
:-:|:-:|
|√|x|√|√|√|
√|√|
### uni.setClipboardData(OBJECT)
设置系统剪贴板的内容。
...
...
@@ -55,5 +55,5 @@ uni.getClipboardData({
#### **注意**
-
设置剪贴板内容后,小程序平台会自动弹出轻提示。App平台默认与小程序保持一致策略。如不希望在App平台弹出提示,可使用Native.js自行操作剪贴板,
[
http://ask.dcloud.net.cn/question/2034
](
http://ask.dcloud.net.cn/question/2034
)
-
H5的复制粘贴,可去插件市场搜索
[
剪贴板
](
https://ext.dcloud.net.cn/search?q=%E5%89%AA%E8%B4%B4%E6%9D%BF
)
\ No newline at end of file
-
设置剪贴板内容后,小程序平台会自动弹出轻提示。App平台默认与小程序保持一致策略。如不希望在App平台弹出提示,可使用Native.js自行操作剪贴板,插件市场有封装好的示例
[
https://ext.dcloud.net.cn/plugin?id=712
](
https://ext.dcloud.net.cn/plugin?id=712
)
-
H5的复制粘贴,可去插件市场搜索
[
剪贴板
](
https://ext.dcloud.net.cn/search?q=%E5%89%AA%E8%B4%B4%E6%9D%BF
)
docs/api/system/compass.md
浏览文件 @
f150bfaa
...
...
@@ -23,9 +23,9 @@ uni.onCompassChange(function (res) {
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|√|√|x|√|√|
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
QQ小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
:-:|
|√|√|√|x|√|√|
√|
**OBJECT 参数说明**
...
...
@@ -56,4 +56,4 @@ uni.startCompass();
```
javascript
uni
.
stopCompass
();
```
\ No newline at end of file
```
docs/api/system/contact.md
浏览文件 @
f150bfaa
### uni.addPhoneContact(OBJECT)
调用后,用户可以选择将该表单以“新增联系人”或“添加到已有联系人”的方式(APP端目前没有选择步骤,将直接写入),写入手机系统通讯录,完成手机通讯录联系人和联系方式的增加。
App平台提供了更多通讯录相关API,详见:
[
https://www.html5plus.org/doc/zh_cn/contacts.html
](
https://www.html5plus.org/doc/zh_cn/contacts.html
)
App平台提供了更多通讯录相关API,
包括读取联系人,
详见:
[
https://www.html5plus.org/doc/zh_cn/contacts.html
](
https://www.html5plus.org/doc/zh_cn/contacts.html
)
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|x|√|√|√|x|
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
QQ小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
:-:|
|√|x|√|√|√|x|
x|
**OBJECT 参数说明**
...
...
docs/api/system/deviceMotion.md
浏览文件 @
f150bfaa
####
设备方向
####
监听设备方向变化
仅微信小程序平台支持,
[
规范详情
](
https://developers.weixin.qq.com/miniprogram/dev/api/device/motion/wx.startDeviceMotionListening.html
)
在App平台,也可以通过监听窗体大小变化onResize来实现此类需求。
[
详见
](
https://uniapp.dcloud.io/collocation/frame/lifetime?id=%e9%a1%b5%e9%9d%a2%e7%94%9f%e5%91%bd%e5%91%a8%e6%9c%9f
)
docs/api/system/ibeacon.md
浏览文件 @
f150bfaa
**iBeacon API 平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|
|:-:|:-:|:-:|:-:|:-:|
|√|x|√|√|x|
|5+App|H5|微信小程序|支付宝小程序|百度小程序|
头条小程序|QQ小程序|
|:-:|:-:|:-:|:-:|:-:|
:-:|:-:|
|√|x|√|√|x|
x|x|
### uni.onBeaconServiceChange(CALLBACK)
...
...
@@ -116,4 +116,4 @@ uni.startBeaconDiscovery({
|minor|string|iBeacon 设备的次 id|
|proximity|number|表示设备距离的枚举值|
|accuracy|number|iBeacon 设备的距离|
|rssi|number|表示设备的信号强度|
\ No newline at end of file
|rssi|number|表示设备的信号强度|
docs/api/system/memory.md
浏览文件 @
f150bfaa
...
...
@@ -6,9 +6,9 @@
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|x|x|√|x|√|x|
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
QQ小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
:-:|
|x|x|√|x|√|x|
√|
**CALLBACK返回参数:**
...
...
@@ -30,4 +30,4 @@
uni
.
onMemoryWarning
(
function
()
{
console
.
log
(
'
onMemoryWarningReceive
'
)
})
```
\ No newline at end of file
```
docs/api/system/vibrate.md
浏览文件 @
f150bfaa
### uni.vibrate(OBJECT)
使手机发生振动。
**OBJECT 参数说明**
|参数名|类型|必填|说明|
|:-|:-|:-|:-|
|success|Function|否|接口调用成功的回调|
|fail|Function|否|接口调用失败的回调函数|
|complete|Function|否|接口调用结束的回调函数(调用成功、失败都会执行)|
**示例**
```
javascript
uni
.
vibrate
({
success
:
function
()
{
console
.
log
(
'
success
'
);
}
});
```
### uni.vibrateLong(OBJECT)
使手机发生较长时间的振动(400ms)。
...
...
@@ -42,4 +63,5 @@ uni.vibrateShort({
**注意**
-
iOS上只有长震动,没有短震动
-
iOS上需要手机设置“打开响铃时震动”或“静音时震动”,否则无法震动
\ No newline at end of file
-
iOS上需要手机设置“打开响铃时震动”或“静音时震动”,否则无法震动
-
vibrate只适用于钉钉小程序、支付宝小程序
\ No newline at end of file
docs/api/system/wifi.md
浏览文件 @
f150bfaa
#### Wi-Fi
仅微信小程序平台、App平台支持,各平台开发方式暂未统一,使用时需注意用
[
条件编译
](
https://uniapp.dcloud.io/platform
)
调用不同平台的代码。
仅微信小程序平台、App平台
、头条小程序
支持,各平台开发方式暂未统一,使用时需注意用
[
条件编译
](
https://uniapp.dcloud.io/platform
)
调用不同平台的代码。
微信小程序平台实现参考:
[
规范详情
](
https://developers.weixin.qq.com/miniprogram/dev/api/wx.startWifi.html
)
头条小程序的wifi API参考:
[
规范详情
](
https://developer.toutiao.com/docs/api/getConnectedWifi.html
)
App 平台实现参考
...
...
@@ -11,4 +12,4 @@ App 平台实现参考
-
[
获取WIFI列表
](
https://ask.dcloud.net.cn/question/12113
)
**ios:**
-
[
打开ios的WIFI设置页面
](
https://ask.dcloud.net.cn/question/7797
)
\ No newline at end of file
-
[
打开ios的WIFI设置页面
](
https://ask.dcloud.net.cn/question/7797
)
docs/api/ui/bgcolor.md
浏览文件 @
f150bfaa
...
...
@@ -15,9 +15,9 @@
|backgroundColor|String||否|窗口的背景色,必须为十六进制颜色值|
|backgroundColorTop|String||否|顶部窗口的背景色,必须为十六进制颜色值,仅 iOS 支持|
|backgroundColorBottom|String||否|底部窗口的背景色,必须为十六进制颜色值,仅 iOS 支持|
|success|Funtion||否|接口调用成功的回调函数|
|fail|Funtion||否|接口调用失败的回调函数|
|complete|Funtion||否|接口调用结束的回调函数(调用成功、失败都会执行)|
|success|Fun
c
tion||否|接口调用成功的回调函数|
|fail|Fun
c
tion||否|接口调用失败的回调函数|
|complete|Fun
c
tion||否|接口调用结束的回调函数(调用成功、失败都会执行)|
**代码示例**
...
...
@@ -42,11 +42,11 @@ uni.setBackgroundColor({
**参数说明**
|属性|类型|必填|说明|
|:-|:-|:-|:-|
:-|
|:-|:-|:-|:-|
|textStyle|String|是|下拉背景字体、loading 图的样式,值为:dark、light|
|success|Funtion|否|接口调用成功的回调函数|
|fail|Funtion|否|接口调用失败的回调函数|
|complete|Funtion|否|接口调用结束的回调函数(调用成功、失败都会执行)|
|success|Fun
c
tion|否|接口调用成功的回调函数|
|fail|Fun
c
tion|否|接口调用失败的回调函数|
|complete|Fun
c
tion|否|接口调用结束的回调函数(调用成功、失败都会执行)|
**代码示例**
...
...
@@ -54,4 +54,4 @@ uni.setBackgroundColor({
uni
.
setBackgroundTextStyle
({
textStyle
:
'
dark
'
// 下拉背景字体、loading 图的样式为dark
})
```
\ No newline at end of file
```
docs/api/ui/intersection-observer.md
浏览文件 @
f150bfaa
...
...
@@ -3,12 +3,6 @@
### uni.createIntersectionObserver([this], [options])
创建并返回一个
``IntersectionObserver``
对象实例。
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|HBuilderX 2.0.4+|√|√|√|√|
**options 的可选参数为:**
|字段名|类型|说明|
...
...
@@ -133,4 +127,4 @@ uni.createIntersectionObserver(this).relativeTo('.scroll',{bottom: 100}}).observ
}
</style>
```
\ No newline at end of file
```
docs/api/ui/menuButton.md
浏览文件 @
f150bfaa
#### getMenuButtonBoundingClientRect()
#### getMenuButtonBoundingClientRect()
在小程序平台,如果原生导航栏被隐藏,仍然在右上角会有一个悬浮按钮,微信下也被称为胶囊按钮。本API用于获取小程序下该菜单按钮的布局位置信息,方便开发者布局顶部内容时避开该按钮。
坐标信息以屏幕左上角为原点。
坐标信息以屏幕左上角为原点。
各平台开发方式暂未统一,使用时需注意用
[
条件编译
](
https://uniapp.dcloud.io/platform
)
调用不同平台的代码。
微信小程序:
[
规范详情
](
https://developers.weixin.qq.com/miniprogram/dev/api/wx.getMenuButtonBoundingClientRect.html
)
百度小程序:
[
规范详情
](
https://smartprogram.baidu.com/docs/develop/api/menu_info/
)
支付宝小程序:其逻辑与微信小程序不同,它提供了菜单点击后按钮的自定义功能,可以选择显示那些系统按钮,
[
规范详情
](
https://docs.alipay.com/mini/api/optionmenuitem
)
\ No newline at end of file
-
微信小程序:
[
规范详情
](
https://developers.weixin.qq.com/miniprogram/dev/api/wx.getMenuButtonBoundingClientRect.html
)
-
百度小程序:
[
规范详情
](
https://smartprogram.baidu.com/docs/develop/api/menu_info/
)
-
支付宝小程序:其逻辑与微信小程序不同,它提供了菜单点击后按钮的自定义功能,可以选择显示那些系统按钮,
[
规范详情
](
https://docs.alipay.com/mini/api/optionmenuitem
)
-
头条小程序:
[
规范详情
](
https://developer.toutiao.com/docs/game/ui/menu/tt.getMenuButtonBoundingClientRect.html
)
-
QQ小程序:
[
规范详情
](
https://q.qq.com/wiki/develop/game/API/interface/menu.html#qq-getmenubuttonboundingclientrect
)
docs/api/ui/nextTick.md
浏览文件 @
f150bfaa
#### nextTick(function callback)
延迟一部分操作到下一个时间片再执行。(类似于 setTimeout)
仅微信小程序平台支持,
[
规范详情
](
https://developers.weixin.qq.com/miniprogram/dev/api/wx.nextTick.html
)
在小程序自定义组件,如wxcomponents中使用。延迟一部分操作到下一个时间片再执行。(类似于 setTimeout) 。其他平台无此概念。
-
微信小程序:
[
规范详情
](
https://developers.weixin.qq.com/miniprogram/dev/api/wx.nextTick.html
)
-
百度小程序:
[
规范详情
](
https://smartprogram.baidu.com/docs/develop/api/custom_component/#swan-nextTick/
)
-
QQ小程序:
[
规范详情
](
https://q.qq.com/wiki/develop/miniprogram/API/interface/interface_nexttick.html#qq-nexttick
)
docs/api/ui/pulldown.md
浏览文件 @
f150bfaa
...
...
@@ -7,12 +7,6 @@
### uni.startPullDownRefresh(OBJECT)
开始下拉刷新,调用后触发下拉刷新动画,效果与用户手动下拉刷新一致。
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|√|√|x|√|√|
**OBJECT 参数说明**
|参数名|类型|必填|说明|
...
...
@@ -75,12 +69,18 @@ export default {
}
```
**注意**
-
支付宝小程序
```startPullDownRefresh```
在开发者工具里会提示
``暂未开放,请勿使用``
-
支付宝小程序
```startPullDownRefresh```
请使用真机调试(非真机预览)
-
后续支付宝小程序开发工具更新可能会有所修改
### FAQ
Q:如何暂时禁用掉下拉刷新,待需要的时候再重新开启?
A:
`5+App`
平台下可以处理此类场景,详细参考:
[
uni-app 中实现动态禁用/开启下拉刷新
](
http://ask.dcloud.net.cn/article/35134
)
A:
`5+App`
平台下可以处理此类场景,详细参考:
[
uni-app 中实现动态禁用/开启下拉刷新
](
http
s
://ask.dcloud.net.cn/article/35134
)
Q:自定义title如何让下拉刷新在title之下
A:App和H5端使用circle方式的下拉刷新,设offset在title高度之下。hello uni-app的模板-导航栏中有示例。小程序端无法实现,除非放弃原生下拉刷新,自己模拟。
A:App和H5端使用circle方式的下拉刷新,设offset在title高度之下。hello uni-app的模板-导航栏中有示例。小程序端无法实现,除非放弃原生下拉刷新,自己模拟
下拉刷新,插件市场有类似插件,但性能不如原生下拉刷新
。
Q:如何自定义下拉刷新样式
A:小程序端的原生下拉刷新样式是固定的;App端原生的下拉刷新有2种样式可选择,下拉漏出雪花和下拉circle圈。如果使用nvue,
也可以自己实现
下拉刷新,都是原生渲染。如果想使用scroll-view在前端实现自定义下拉刷新,需要注意列表不可太长和太复杂,否则会有性能问题。
[
插件市场
](
https://ext.dcloud.net.cn/
)
搜索下拉刷新有示例。
A:小程序端的原生下拉刷新样式是固定的;App端原生的下拉刷新有2种样式可选择,下拉漏出雪花和下拉circle圈。如果使用nvue,
可以使用
[
refresh组件
](
https://uniapp.dcloud.io/component/refresh
)
自定义
下拉刷新,都是原生渲染。如果想使用scroll-view在前端实现自定义下拉刷新,需要注意列表不可太长和太复杂,否则会有性能问题。
[
插件市场
](
https://ext.dcloud.net.cn/
)
搜索下拉刷新有示例。
docs/api/ui/tabbar.md
浏览文件 @
f150bfaa
...
...
@@ -6,7 +6,7 @@
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|√|√|
x
|√|x|
|√|√|√|
√
|√|x|
**OBJECT参数说明:**
...
...
@@ -39,7 +39,7 @@ uni.setTabBarItem({
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|√|√|
x
|√|x|
|√|√|√|
√
|√|x|
**OBJECT参数说明:**
...
...
@@ -72,7 +72,7 @@ uni.setTabBarStyle({
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|√|√|
x
|√|x|
|√|√|√|
√
|√|x|
**OBJECT参数说明:**
...
...
@@ -91,7 +91,7 @@ uni.setTabBarStyle({
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|√|√|
x
|√|x|
|√|√|√|
√
|√|x|
**OBJECT参数说明:**
...
...
@@ -109,7 +109,7 @@ uni.setTabBarStyle({
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|√|√|
x
|√|x|
|√|√|√|
√
|√|x|
**OBJECT参数说明:**
...
...
@@ -137,7 +137,7 @@ uni.setTabBarBadge({
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|√|√|
x
|√|x|
|√|√|√|
√
|√|x|
**OBJECT参数说明:**
...
...
@@ -155,7 +155,7 @@ uni.setTabBarBadge({
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|√|√|
x
|√|x|
|√|√|√|
√
|√|x|
**OBJECT参数说明:**
...
...
@@ -173,7 +173,7 @@ uni.setTabBarBadge({
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|√|√|
x
|√|x|
|√|√|√|
√
|√|x|
**OBJECT参数说明:**
...
...
docs/api/ui/window.md
浏览文件 @
f150bfaa
...
...
@@ -7,7 +7,7 @@
|5+App|H5|微信小程序 |支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|√|√|x|x|x|
|√
(nvue不支持)
|√|√|x|x|x|
**CALLBACK 参数说明**
...
...
@@ -24,6 +24,10 @@ uni.onWindowResize((res) => {
})
```
**TIPS**
-
如App端设置软键盘弹出方式为adjustResize ,则在键盘弹出时,会触发此事件。
-
横竖屏切换时,会触发此事件。
### uni.offWindowResize(CALLBACK)
取消监听窗口尺寸变化事件
...
...
docs/case.md
浏览文件 @
f150bfaa
...
...
@@ -25,6 +25,7 @@ uni-app已经有几十万开发者,创建了几十万个项目,是开发者
</a>
</div>
<!--
<a
href=
"//m3w.cn/__uni__fad3fd9"
target=
"_blank"
class=
"clear-style"
><b>
图片App模版:
</b></a>
使用uni-app开发的图片App模版,包含单列图、双列图,图片分类,图片轮播、预览、下载,图片分享、收藏,设置桌面背景图等功能。本项目源码在HBuilderX中新建项目可获得。
<div
style=
"display:flex;justify-content: space-around;"
>
<a
href=
"//m3w.cn/__uni__fad3fd9"
target=
"_blank"
class=
"clear-style barcode-view"
>
...
...
@@ -32,9 +33,12 @@ uni-app已经有几十万开发者,创建了几十万个项目,是开发者
<span
style=
"margin-top:15px;"
>
App及H5的通用快码
</span>
</a>
</div>
-->
### 第三方开发者案例
<a
href=
"https://www.csdn.net/"
target=
"_blank"
class=
"clear-style"
><b>
CSDN:
</b></a>
专业 IT 技术社区,致力于为中国软件开发者提供知识传播、在线学习、职业发展等全生命周期服务。
<div
style=
"display:flex;justify-content: space-around;"
>
<a
href=
"javascript:;"
target=
"_blank"
class=
"clear-style barcode-view"
>
...
...
@@ -93,6 +97,14 @@ uni-app已经有几十万开发者,创建了几十万个项目,是开发者
<img
src=
"https://img-cdn-qiniu.dcloud.net.cn/uniapp/doc/cyb-baidu.png"
width=
"200"
/>
<span
style=
"margin-top:15px;"
>
百度小程序码
</span>
</a>
<a
href=
"https://www.cyb520.com/"
target=
"_blank"
class=
"clear-style barcode-view"
>
<img
src=
"https://img.cyb520.com/faceImg/2019/08/17/130C1F3F-2E93-A55D-D6B2-074BEBE1902F.png/a120"
width=
"200"
/>
<span
style=
"margin-top:15px;"
>
QQ小程序码
</span>
</a>
<a
href=
"https://www.cyb520.com/"
target=
"_blank"
class=
"clear-style barcode-view"
>
<img
src=
"https://img.cyb520.com/faceImg/2019/08/17/404C2595-2B08-D471-1317-6D5375F195C5.png/a120"
width=
"200"
/>
<span
style=
"margin-top:15px;"
>
头条/抖音小程序码
</span>
</a>
</div>
<b>
垃圾分类:
</b>
垃圾分一分,环境美十分。参与垃圾分类,保护地球家园,共创美好世界。(作者:怎么会这样)
...
...
@@ -114,7 +126,8 @@ uni-app已经有几十万开发者,创建了几十万个项目,是开发者
<span
style=
"margin-top:15px;"
>
头条小程序码
</span>
</a>
</div>
<!-- <a href="//m3w.cn/__uni__4c6db6e" target="_blank" class="clear-style"><b>
UniApp视频教程:
</b></a>
视频教育App,帮助开发者学习了解uni-app、h5+、mui等DCloud产品。开发者枫桥。
<div style="display:flex;justify-content: space-around;">
<a href="//m3w.cn/__uni__4c6db6e" target="_blank" class="clear-style barcode-view">
...
...
@@ -164,6 +177,8 @@ uni-app已经有几十万开发者,创建了几十万个项目,是开发者
**蓝鲸鱼旧物回收:**
微信、支付宝搜索“蓝鲸鱼旧物回收”
**锦衣盒:**
专注男士形象打造,全新的智能化购物模式,解决男士购衣困扰。微信小程序中搜索“锦衣盒”,头条/抖音小程序二维码
[
点此
](
http://img.cdn.aliyun.dcloud.net.cn/guide/uniapp/case-jinyihe-toutiao.png
)
**ADR之声:**
航空工业信息中心App。
[
Android
](
https://m3w.cn/__uni__937cb89
)
**机场行:**
中国航信以机场为核心为旅客提供智能全行程服务应用。微信小程序搜索“机场行”,
[
H5
](
http://airporttravel.travelsky.com/weixin/
)
...
...
@@ -180,6 +195,8 @@ uni-app已经有几十万开发者,创建了几十万个项目,是开发者
**江苏公安网上政工慰问:**
[
H5
](
https://jxt.jsga.gov.cn:10006/app/njqxgzzs/zgww/#/
)
**
杭州智安通:
*
[
H5
](
https://hzjjzat.citydo.com.cn/vehicle-test
)
**深圳福田区爱福田:**
[
H5
](
https://ifutian.szft.gov.cn/masterSecond/
)
**广州市南沙区企业综合服务平台:**
[
H5
](
https://qiye.gzns.gov.cn/m/#/
)
...
...
docs/cloud.md
浏览文件 @
f150bfaa
...
...
@@ -5,27 +5,27 @@ UniPush是DCloud推出的集成型统一推送服务,内建了苹果、华为
UniPush即降低了开发成本、又提高了push送达率,并且免费,是当前推送的最佳解决方案。
详见
[
http://ask.dcloud.net.cn/article/35622
](
http://ask.dcloud.net.cn/article/35622
)
详见
[
https://ask.dcloud.net.cn/article/35622
](
https://ask.dcloud.net.cn/article/35622
)
### uni统计
uni-app,自带免费统计平台。无需到处对接统计sdk,可以在一张报表里看到所有端(iOS、Android、H5及各家小程序)的运营数据。
uni统计官网地址:
[
https://tongji.dcloud.net.cn/
](
https://tongji.dcloud.net.cn/
)
### 广告变现
```
uni-app``` 支持DCloud的广告联盟,开发者在打包界面简单打几个勾,就可开通开屏、悬浮红包、推送等广告形式,快速实现App变现。
```
uni-app``` 支持DCloud的广告联盟,开发者在打包界面简单打几个勾,就可开通开屏、悬浮红包、推送等广告形式,快速实现App变现。
更多广告联盟的介绍,参考 [广告联盟DAD](http://www.dcloud.io/dad.html)
### 运营统计
### 制作统一发行页面
开发者的应用太多,App、小程序、h5...如何在一个url里呈现,统一简单的传播到用户侧?
来看这个页面[http://m3w.cn/uniapp](http://m3w.cn/uniapp),一个页面囊括所有。
如何制作?开发一个uni-app,然后在HBuilderX的菜单工具-发行-生成统一发布页面。
DCloud开发的App,自带免费统计平台。
登录[https://dev.dcloud.net.cn](https://dev.dcloud.net.cn) 可查看 ```uni-app``` 在微信小程序、原生App不同平台的统计数据,比如新增用户、日活用户、留存等。
### 制作统一发行页面
开发者的应用太多,App、小程序、h5...如何在一个url里呈现,统一简单的传播到用户侧?
来看这个页面[http://m3w.cn/uniapp](http://m3w.cn/uniapp),一个页面囊括所有。
如何制作?开发一个uni-app,然后在HBuilderX的菜单工具-发行-生成统一发布页面。
#### 加入换量联盟
```
uni-app
```
发行成原生App后,可加入DCloud换量平台,和其他开发者交叉换量、彼此推广,每日新增用户可翻倍!详情及开通方式:
[
http://ask.dcloud.net.cn/article/13300
](
http://ask.dcloud.net.cn/article/13300
)
\ No newline at end of file
```
uni-app
```
发行成原生App后,可加入DCloud换量平台,和其他开发者交叉换量、彼此推广,每日新增用户可翻倍!详情及开通方式:
[
http://ask.dcloud.net.cn/article/13300
](
http://ask.dcloud.net.cn/article/13300
)
docs/collocation/frame/lifetime.md
浏览文件 @
f150bfaa
...
...
@@ -87,6 +87,21 @@ export default {
}
```
### 组件生命周期
``uni-app``
组件支持如下页面生命周期函数:
|函数名|说明|平台差异说明|最低版本|
|:-|:-|:-|:-|
|beforeCreate|在实例初始化之后被调用。
[
详见
](
https://cn.vuejs.org/v2/api/#beforeCreate
)
|||
|created|在实例创建完成后被立即调用。
[
详见
](
https://cn.vuejs.org/v2/api/#created
)
|||
|beforeMount|在挂载开始之前被调用。
[
详见
](
https://cn.vuejs.org/v2/api/#beforeMount
)
|||
|mounted|挂载到实例上去之后调用。
[
详见
](
https://cn.vuejs.org/v2/api/#mounted
)
注意:此处并不能确定子组件被全部挂载,如果需要子组件完全挂载之后在执行操作可以使用
```$nextTick```
[
Vue官方文档
](
https://cn.vuejs.org/v2/api/#Vue-nextTick
)
|||
|beforeUpdate|数据更新时调用,发生在虚拟 DOM 打补丁之前。
[
详见
](
https://cn.vuejs.org/v2/api/#beforeUpdate
)
|仅H5平台支持||
|updated|由于数据更改导致的虚拟 DOM 重新渲染和打补丁,在这之后会调用该钩子。
[
详见
](
https://cn.vuejs.org/v2/api/#updated
)
|仅H5平台支持||
|beforeDestroy|实例销毁之前调用。在这一步,实例仍然完全可用。
[
详见
](
https://cn.vuejs.org/v2/api/#beforeDestroy
)
|||
|destroyed|Vue 实例销毁后调用。调用后,Vue 实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。
[
详见
](
https://cn.vuejs.org/v2/api/#destroyed
)
|||
**注意**
-
nvue 页面支持的生命周期参考:
[
nvue 生命周期介绍
](
/use-weex?id=生命周期
)
。
\ No newline at end of file
docs/collocation/manifest.md
浏览文件 @
f150bfaa
...
...
@@ -46,8 +46,8 @@
|modules|Object|权限模块,
[
详见
](
/collocation/manifest?id=modules
)
||
|distribute|Object|5+App 发布信息,
[
详见
](
/collocation/manifest?id=distribute
)
||
|usingComponents|Boolean|是否启用自定义组件模式,默认为false,
[
编译模式区别详情
](
https://ask.dcloud.net.cn/article/35843
)
|1.9.0|
|nvueCompiler|String|切换 nvue 编译模式,可选值,
`weex`
:老编译模式,
`uni-app`
: 新编译模式,默认为
`weex`
。
[
编译模式区别详情
](
http://ask.dcloud.net.cn/article/36074
)
|2.0.3 Alpha|
|renderer|String|可不加载基于 webview 的运行框架,减少包体积、提升启动速度。可选值
`native`
| App-nvue 2.2.0+|
|nvueCompiler|String|切换 nvue 编译模式,可选值,
`weex`
:老编译模式,
`uni-app`
: 新编译模式,默认为
`weex`
。
[
编译模式区别详情
](
http://ask.dcloud.net.cn/article/36074
)
|2.0.3 Alpha|
|renderer|String|可不加载基于 webview 的运行框架,减少包体积、提升启动速度。可选值
`native`
| App-nvue 2.2.0+|
|nvue|Object|nvue 页面布局初始配置,
[
详见
](
/collocation/manifest?id=nvue
)
|2.0.3 Alpha|
PS:这里只列出了核心部分,更多内容请参考
[
完整的 manifest.json
](
/collocation/manifest?id=完整-manifestjson
)
。
...
...
@@ -125,15 +125,15 @@ splash(启动封面)是App必然存在的、不可取消的。
|statics|Object|统计配置,目前仅支付友盟统计,
[
详见
](
http://ask.dcloud.net.cn/article/74
)
,在uni-app中只用
[
plus.statistic
](
http://www.html5plus.org/doc/zh_cn/statistic.html
)
进行调用。|
|speech|Object|语音识别配置,支持讯飞语音、百度语音,
[
详见
](
http://ask.dcloud.net.cn/article/35059
)
,在uni-app中只用
[
plus.speech
](
http://www.html5plus.org/doc/zh_cn/speech.html
)
进行调用。|
|maps|Object|原生地图配置,目前仅支持
[
高德地图
](
http://lbs.amap.com/
)
,申请方式可参考:
[
地图插件配置
](
http://ask.dcloud.net.cn/article/29
)
。|
#### nvue@nvue
`nvue`
页面布局初始设置
#### nvue@nvue
`nvue`
页面布局初始设置
|属性|类型|描述|
|:-|:-|:-|
|flex-direction|String| flex 成员项的排列方向,支持项,row:从左到右; row-reverse:从下到上;column:从上到下;column-reverse:与 row 相反,默认值 column。|
### h5
|属性|类型|说明|
...
...
@@ -144,8 +144,8 @@ splash(启动封面)是App必然存在的、不可取消的。
|async|Object|参考:
[
async
](
collocation/manifest?id=h5-async
)
|
|devServer|Object|开发环境 server 配置,参考:
[
devServer
](
collocation/manifest?id=devserver
)
|
|publicPath|String|引用资源的地址前缀,仅发布时生效。参考:
[
publicPath
](
collocation/manifest?id=publicPath
)
|
|sdkConfigs|String|SDK配置,例如地图... 参考:
[
sdkConfigs
](
collocation/manifest?id=h5sdkconfig
)
|
|optimization|Object|打包优化配置(HBuilderX 2.1.5 以上支持),参考
[
optimization
](
collocation/manifest?id=optimization
)
|
|sdkConfigs|String|SDK配置,例如地图... 参考:
[
sdkConfigs
](
collocation/manifest?id=h5sdkconfig
)
|
|optimization|Object|打包优化配置(HBuilderX 2.1.5 以上支持),参考
[
optimization
](
collocation/manifest?id=optimization
)
|
#### 自定义模板@h5-template
...
...
@@ -222,13 +222,13 @@ Tips:`uni-app` 中 `manifest.json->h5->devServer` 实际上对应 `webpack`
以 hello-uniapp 发布 H5 时为例
未配置 publicPath 时,发布时 index.html 中的结果:
未配置 publicPath 时,发布时 index.html 中的结果:
```
html
<script
src=
/h5/static/js/chunk-vendors.803ce52d.js
></script>
<script
src=
/h5/static/js/index.34e8497d.js
>
```
配置 publicPath 为
`https://www.cdn.com/h5/`
(无效地址仅用作示例) 后,发布时 index.html 中的结果:
配置 publicPath 为
`https://www.cdn.com/h5/`
(无效地址仅用作示例) 后,发布时 index.html 中的结果:
```
html
<script
src=
https://www.cdn.com/h5/static/js/chunk-vendors.803ce52d.js
></script>
...
...
@@ -256,30 +256,32 @@ Tips:`uni-app` 中 `manifest.json->h5->devServer` 实际上对应 `webpack`
}
```
#### optimization
|属性|类型|默认值|说明|
|:-|:-|:-|:-|
|prefetch|Boolean|false|资源预取|
|preload|Boolean|false|资源预加载|
|treeShaking|Object||摇树优化,根据项目需求,动态打包框架所需的组件及API,保持框架代码最精简化,参考
[
treeShaking
](
collocation/manifest?id=treeshaking
)
|
##### treeShaking
|属性|类型|默认值|说明|
|:-|:-|:-|:-|
|enable|Boolean|false|是否启用摇树优化|
**示例:**
```
json
"h5"
:
{
"optimization"
:
{
"treeShaking"
:
{
"enable"
:
true
}
}
}
```
#### optimization
|属性|类型|默认值|说明|
|:-|:-|:-|:-|
|prefetch|Boolean|false|资源预取|
|preload|Boolean|false|资源预加载|
|treeShaking|Object||摇树优化,根据项目需求,动态打包框架所需的组件及API,保持框架代码最精简化,参考
[
treeShaking
](
collocation/manifest?id=treeshaking
)
|
##### treeShaking
|属性|类型|默认值|说明|
|:-|:-|:-|:-|
|enable|Boolean|false|是否启用摇树优化|
**示例:**
```
json
"h5"
:
{
"optimization"
:
{
"treeShaking"
:
{
"enable"
:
true
}
}
}
```
Tips:关于摇树优化(treeShaking)原理及优化结果,参考:
[
https://ask.dcloud.net.cn/article/36279
](
https://ask.dcloud.net.cn/article/36279
)
### mp-weixin
...
...
@@ -293,7 +295,7 @@ Tips:`uni-app` 中 `manifest.json->h5->devServer` 实际上对应 `webpack`
|plugins|Object|使用到的插件,
[
详见
](
https://developers.weixin.qq.com/miniprogram/dev/framework/plugin/using.html
)
|
|resizable|Boolean|在iPad上小程序是否支持屏幕旋转,默认关闭|
|navigateToMiniProgramAppIdList|Array|需要跳转的小程序列表,
[
详见
](
https://developers.weixin.qq.com/miniprogram/dev/api/open-api/miniprogram-navigate/wx.navigateToMiniProgram.html
)
|
|permission|Object|微信小程序接口权限相关设置,比如申请位置权限必须填此处
[
详见
](
https://developers.weixin.qq.com/miniprogram/dev/framework/config.html
)
|
|permission|Object|微信小程序接口权限相关设置,比如申请位置权限必须填此处
[
详见
](
https://developers.weixin.qq.com/miniprogram/dev/framework/config.html
)
|
|workers|String|Worker 代码放置的目录,
**HBuilderX 2.0.0+ Alpha**
支持。
[
详见
](
https://developers.weixin.qq.com/miniprogram/dev/framework/workers.html
)
|
#### setting
...
...
@@ -306,18 +308,18 @@ Tips:`uni-app` 中 `manifest.json->h5->devServer` 实际上对应 `webpack`
|es6|Boolean|ES6 转 ES5|
|postcss|Boolean|上传代码时样式是否自动补全|
|minified|Boolean|上传代码时是否自动压缩|
### mp-alipay
|属性|类型|说明|
|:-|:-|:-|
|usingComponents|Boolean| 是否启用自定义组件模式,
`v2.0+`
,默认为false,
[
编译模式区别详情
](
https://ask.dcloud.net.cn/article/35843
)
|
### mp-alipay
|属性|类型|说明|
|:-|:-|:-|
|usingComponents|Boolean| 是否启用自定义组件模式,
`v2.0+`
,默认为false,
[
编译模式区别详情
](
https://ask.dcloud.net.cn/article/35843
)
|
### mp-baidu
|属性|类型|说明|
|:-|:-|:-|
|appid|String|百度小程序的 AppID,登录
[
https://smartprogram.baidu.com/docs/introduction/enter_application/
](
https://smartprogram.baidu.com/docs/introduction/enter_application/
)
申请|
|appid|String|百度小程序的 AppID,登录
[
https://smartprogram.baidu.com/docs/introduction/enter_application/
](
https://smartprogram.baidu.com/docs/introduction/enter_application/
)
申请|
|usingComponents|Boolean| 是否启用自定义组件模式,
`v2.0+`
,默认为false,
[
编译模式区别详情
](
https://ask.dcloud.net.cn/article/35843
)
|
### mp-toutiao
...
...
@@ -326,6 +328,7 @@ Tips:`uni-app` 中 `manifest.json->h5->devServer` 实际上对应 `webpack`
|:-|:-|:-|
|appid|String|头条小程序的 AppID,登录
[
https://developer.toutiao.com/
](
https://developer.toutiao.com/
)
申请|
|setting|Object|头条小程序项目设置,参考
[
头条小程序项目设置
](
/collocation/manifest?id=mp-toutiao-setting
)
|
|usingComponents|Boolean| 是否启用自定义组件模式,
`v2.0+`
,默认为false,
[
编译模式区别详情
](
https://ask.dcloud.net.cn/article/35843
)
|
#### 头条小程序项目设置@mp-toutiao-setting
...
...
@@ -335,13 +338,14 @@ Tips:`uni-app` 中 `manifest.json->h5->devServer` 实际上对应 `webpack`
|es6|Boolean|ES6 转 ES5|
|postcss|Boolean|上传代码时样式是否自动补全|
|minified|Boolean|上传代码时是否自动压缩|
### mp-qq
|属性|类型|说明|
|:-|:-|:-|
|appid|String|qq 小程序的 AppID,登录
[
https://q.qq.com
](
https://q.qq.com
)
申请|
|usingComponents|Boolean| 是否启用自定义组件模式,
`v2.0+`
,默认为false,
[
编译模式区别详情
](
https://ask.dcloud.net.cn/article/35843
)
。mp-qq只支持自定义组件模式|
### 完整 manifest.json
...
...
@@ -666,4 +670,4 @@ Tips:`uni-app` 中 `manifest.json->h5->devServer` 实际上对应 `webpack`
# FAQ
Q:iOS 应用调用相机等权限时,弹出的提示语如何修改?
A:在 manifest.json 可视化界面-App模块权限配置-iOS隐私信息访问的许可描述
\ No newline at end of file
A:在 manifest.json 可视化界面-App模块权限配置-iOS隐私信息访问的许可描述
docs/collocation/pages.md
浏览文件 @
f150bfaa
...
...
@@ -76,10 +76,10 @@
|属性|类型|默认值|描述|平台差异说明|
|:-|:-|:-|:-||
|navigationBarBackgroundColor|HexColor|#
000000|导航栏背景颜色(同状态栏背景色)
||
|navigationBarBackgroundColor|HexColor|#
F7F7F7|导航栏背景颜色(同状态栏背景色)|APP与H5为#F7F7F7,小程序平台请参考相应小程序文档
||
|navigationBarTextStyle|String|white|导航栏标题颜色及状态栏前景颜色,仅支持 black/white||
|navigationBarTitleText|String||导航栏标题文字内容||
|navigationStyle|String|default|导航栏样式,仅支持 default/custom。custom即取消默认的原生导航栏,需看
[
使用注意
](
/collocation/pages?id=
/
customnav
)
|微信小程序 7.0+、百度小程序、H5、App(2.0.3+)|
|navigationStyle|String|default|导航栏样式,仅支持 default/custom。custom即取消默认的原生导航栏,需看
[
使用注意
](
/collocation/pages?id=customnav
)
|微信小程序 7.0+、百度小程序、H5、App(2.0.3+)|
|backgroundColor|HexColor|#ffffff|窗口的背景色|微信小程序|
|backgroundTextStyle|String|dark|下拉 loading 的样式,仅支持 dark / light|微信小程序|
|enablePullDownRefresh|Boolean|false|是否开启下拉刷新,详见
[
页面生命周期
](
/use?id=页面生命周期
)
。||
...
...
@@ -89,6 +89,13 @@
|pageOrientation|String|portrait|屏幕旋转设置,仅支持 auto / portrait 详见
[
响应显示区域变化
](
https://developers.weixin.qq.com/miniprogram/dev/framework/view/resizable.html
)
|微信小程序|
|animationType|String|pop-in|窗口显示的动画效果,详见:
[
窗口动画
](
api/router?id=animation
)
|App|
|animationDuration|Number|300|窗口显示动画的持续时间,单位为 ms|App|
|app-plus|Object||设置编译到 App 平台的特定样式,配置项参考下方
[
app-plus
](
/collocation/pages?id=app-plus
)
|App|
|h5|Object||设置编译到 H5 平台的特定样式,配置项参考下方
[
H5
](
/collocation/pages?id=h5
)
|H5|
|mp-alipay|Object||设置编译到 mp-alipay 平台的特定样式,配置项参考下方
[
MP-ALIPAY
](
/collocation/pages?id=mp-alipay
)
|支付宝小程序|
|mp-weixin|Object||设置编译到 mp-weixin 平台的特定样式|微信小程序|
|mp-baidu|Object||设置编译到 mp-baidu 平台的特定样式|百度小程序|
|mp-toutiao|Object||设置编译到 mp-toutiao 平台的特定样式|字节跳动小程序|
|mp-qq|Object||设置编译到 mp-qq 平台的特定样式|QQ小程序|
|usingComponents|Object| |引用小程序组件,参考
[
小程序组件
](
/frame?id=小程序组件支持
)
|微信小程序、App|
# pages
...
...
@@ -152,7 +159,7 @@
|navigationBarTextStyle|String|white|导航栏标题颜色及状态栏前景颜色,仅支持 black/white||
|navigationBarTitleText|String||导航栏标题文字内容||
|navigationBarShadow|Object||导航栏阴影,配置参考下方
[
导航栏阴影
](
/collocation/pages?id=navigationBarShadow
)
||
|navigationStyle|String|default|导航栏样式,仅支持 default/custom。custom即取消默认的原生导航栏,需看
[
使用注意
](
/collocation/pages?id=
/
customnav
)
|微信小程序 7.0+、百度小程序、H5、App(2.0.3+)|
|navigationStyle|String|default|导航栏样式,仅支持 default/custom。custom即取消默认的原生导航栏,需看
[
使用注意
](
/collocation/pages?id=customnav
)
|微信小程序 7.0+、百度小程序、H5、App(2.0.3+)|
|disableScroll|Boolean|false|设置为 true 则页面整体不能上下滚动(bounce效果),只在页面配置中有效,在globalStyle中设置无效|微信小程序(iOS)、百度小程序(iOS)|
|backgroundColor|HexColor|#ffffff|窗口的背景色|微信小程序、百度小程序、头条小程序|
|backgroundTextStyle|String|dark|下拉 loading 的样式,仅支持 dark/light||
...
...
@@ -162,6 +169,11 @@
|backgroundColorBottom|HexColor|#ffffff|底部窗口的背景色。|仅 iOS 平台|
|app-plus|Object||设置编译到 App 平台的特定样式,配置项参考下方
[
app-plus
](
/collocation/pages?id=app-plus
)
|App|
|h5|Object||设置编译到 H5 平台的特定样式,配置项参考下方
[
H5
](
/collocation/pages?id=h5
)
|H5|
|mp-alipay|Object||设置编译到 mp-alipay 平台的特定样式,配置项参考下方
[
MP-ALIPAY
](
/collocation/pages?id=mp-alipay
)
|支付宝小程序|
|mp-weixin|Object||设置编译到 mp-weixin 平台的特定样式|微信小程序|
|mp-baidu|Object||设置编译到 mp-baidu 平台的特定样式|百度小程序|
|mp-toutiao|Object||设置编译到 mp-toutiao 平台的特定样式|字节跳动小程序|
|mp-qq|Object||设置编译到 mp-qq 平台的特定样式|QQ小程序|
|usingComponents|Object||引用小程序组件,参考
[
小程序组件
](
/frame?id=小程序组件支持
)
|App、微信小程序、支付宝小程序、百度小程序|
**代码示例:**
...
...
@@ -210,7 +222,7 @@
-
前端组件在渲染速度上不如原生导航栏,原生导航可以在动画期间渲染,保证动画期间不白屏,但使用前端导航栏,在新窗体进入的动画期间可能会整页白屏,越低端的手机越明显。
-
以上讨论的是前端自定义导航栏,但在App侧,原生导航栏也提供了比小程序导航更丰富的自定义性
*
titleNView:给原生导航栏提供更多配置,包括自定义按钮、滚动渐变效果、搜索框等,详见
[
titleNView
](
/collocation/pages?id=app-titleNView
)
*
su
n
NView:使用nvue原生渲染,所有布局自己开发,具备一切自定义灵活度。详见
[
subNVue
](
/collocation/pages?id=app-subNVues
)
*
su
b
NView:使用nvue原生渲染,所有布局自己开发,具备一切自定义灵活度。详见
[
subNVue
](
/collocation/pages?id=app-subNVues
)
-
页面禁用原生导航栏后,想要改变状态栏的前景字体样式,仍可设置页面的 navigationBarTextStyle 属性(只能设置为 black或white)。如果想单独设置状态栏颜色,App端可使用
[
plus.navigator.setStatusBarStyle
](
http://www.html5plus.org/doc/zh_cn/navigator.html#plus.navigator.setStatusBarStyle
)
设置。注意部分低端Android手机(4.4)自身不支持设置状态栏前景色。
鉴于以上问题,在原生导航能解决业务需求的情况下,尽量使用原生导航。甚至有时需要牺牲一些不是很重要的需求。在App和H5下,uni-app提供了灵活的处理方案:
[
titleNView
](
/collocation/pages?id=app-titleNView
)
、
[
subNVue
](
/collocation/pages?id=app-subNVues
)
、或整页使用nvue。但在小程序下,因为其自身的限制,没有太好的方案。有必要的话,也可以用条件编译分端处理。
...
...
@@ -247,7 +259,7 @@
**Tips**
-
每个页面均支持通过配置
`titleNView:false`
来禁用原生导航栏。一旦禁用原生导航,请注意阅读
[
自定义导航注意事项
](
/collocation/pages?id=
/
customnav
)
。
-
每个页面均支持通过配置
`titleNView:false`
来禁用原生导航栏。一旦禁用原生导航,请注意阅读
[
自定义导航注意事项
](
/collocation/pages?id=customnav
)
。
-
`titleNView`
不能设置
`autoBackButton`
、
`homeButton`
等属性
-
`titleNView`
的
`type`
值为
`transparent`
时,导航栏为透明渐变导航栏
-
在
`titleNView`
配置
`buttons`
后,监听按钮的点击事件,vue 页面参考:
[
onNavigationBarButtonTap
](
/frame?id=页面生命周期
)
、nvue 页面参考:
[
uni.onNavigationBarButtonTap
](
/use-weex?id=onnavigationbarbuttontap
)
...
...
@@ -585,6 +597,27 @@ h5 平台下拉刷新动画,只有 circle 类型。
|:-|:-|:-|
|colorType|String|阴影的颜色,支持:grey、blue、green、orange、red、yellow|
### mp-alipay
配置编译到 MP-ALIPAY 平台时的特定样式
|属性|类型|默认值|描述|
|:-|:-|:-|:-|
|allowsBounceVertical|String|YES|是否允许向下拉拽。支持 YES / NO|
|transparentTitle|String|none|导航栏透明设置。支持 always 一直透明 / auto 滑动自适应 / none 不透明|
|titlePenetrate|String|NO|导航栏点击穿透|
|showTitleLoading|String|NO|是否进入时显示导航栏的 loading。支持 YES / NO|
|titleImage|String||导航栏图片地址(替换当前标题),必须为https的图片链接地址|
|backgroundImageUrl|String||下拉露出显示的背景图链接|
|backgroundImageColor|HexColor||下拉露出显示的背景图底色|
|gestureBack|String|NO|iOS 用,是否支持手势返回。支持 YES / NO|
|enableScrollBar|String|YES|Android 用,是否显示 WebView 滚动条。支持 YES / NO|
**注意事项**
-
```titleImage```
仅支持https地址,设置了
```titleImage```
会是页面
```title```
失效
-
```backgroundImageUrl```
支持网络地址和本地地址,尽量使用绝对地址
-
部分配置可能会只在真机运行的时候生效,支付宝未来应该会改善
# FAQ
-
Q:如何取消原生导航栏?或自定义导航
-
A:参考
[
导航栏开发指南
](
http://ask.dcloud.net.cn/article/34921
)
...
...
docs/collocation/vue-config.md
浏览文件 @
f150bfaa
vue.config.js 是一个可选的配置文件,如果项目的根目录中存在这个文件,那么它会被自动加载,
具体规范参考:
[
vue-config.js
](
https://cli.vuejs.org/zh/config/#vue-config-js
)
**支持情况**
*
CLI 工程
*
HBuilderX 2.1.5 及以上版本
**注意事项**
部分配置项会被编译配置覆盖,例如:
*
publicPath 不支持,如果需要配置,请在 manifest.json->h5->router->base 中配置,参考文档:
[
h5-router
](
collocation/manifest?id=h5-router
)
*
outputDir 不支持
*
assetsDir 固定 static
*
pages 不支持
*
runtimeCompiler 固定 false
*
productionSourceMap 固定 false
*
css.extract H5 平台固定 false,其他平台固定 true
*
parallel 固定 false
**使用示例**
**自定义静态资源目录**
```
js
const
path
=
require
(
'
path
'
)
const
CopyWebpackPlugin
=
require
(
'
copy-webpack-plugin
'
)
module
.
exports
=
{
configureWebpack
:
{
plugins
:
[
new
CopyWebpackPlugin
([
{
from
:
path
.
join
(
__dirname
,
'
src/images
'
),
to
:
path
.
join
(
__dirname
,
'
dist
'
,
process
.
env
.
NODE_ENV
===
'
production
'
?
'
build
'
:
'
dev
'
,
process
.
env
.
UNI_PLATFORM
,
'
images
'
)
}
])
]
}
}
```
**注入全局依赖**
```
js
const
webpack
=
require
(
'
webpack
'
)
vue.config.js 是一个可选的配置文件,如果项目的根目录中存在这个文件,那么它会被自动加载,
一般用于配置 webpack 等编译选项,具体规范参考:
[
vue-config.js
](
https://cli.vuejs.org/zh/config/#vue-config-js
)
**支持情况**
*
CLI 工程
*
HBuilderX 2.1.5 及以上版本
**注意事项**
部分配置项会被编译配置覆盖,例如:
*
publicPath 不支持,如果需要配置,请在 manifest.json->h5->router->base 中配置,参考文档:
[
h5-router
](
collocation/manifest?id=h5-router
)
*
outputDir 不支持
*
assetsDir 固定 static
*
pages 不支持
*
runtimeCompiler 固定 false
*
productionSourceMap 固定 false
*
css.extract H5 平台固定 false,其他平台固定 true
*
parallel 固定 false
**使用示例**
**自定义静态资源目录**
```
js
const
path
=
require
(
'
path
'
)
const
CopyWebpackPlugin
=
require
(
'
copy-webpack-plugin
'
)
module
.
exports
=
{
configureWebpack
:
{
plugins
:
[
new
CopyWebpackPlugin
([
{
from
:
path
.
join
(
__dirname
,
'
src/images
'
),
to
:
path
.
join
(
__dirname
,
'
dist
'
,
process
.
env
.
NODE_ENV
===
'
production
'
?
'
build
'
:
'
dev
'
,
process
.
env
.
UNI_PLATFORM
,
'
images
'
)
}
])
]
}
}
```
**注入全局依赖**
```
js
const
webpack
=
require
(
'
webpack
'
)
module
.
exports
=
{
configureWebpack
:
{
plugins
:
[
new
webpack
.
ProvidePlugin
({
'
localStorage
'
:
[
'
mp-storage
'
,
'
localStorage
'
],
'
localStorage
'
:
[
'
mp-storage
'
,
'
localStorage
'
],
'
window.localStorage
'
:
[
'
mp-storage
'
,
'
localStorage
'
]
})
]
}
}
```
}
```
docs/component/audio.md
浏览文件 @
f150bfaa
...
...
@@ -3,11 +3,13 @@
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|√|√|x|√|x|
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
QQ小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
:-:|
|√|√|√|x|√|x|
x|
**注意:**
微信小程序平台自基础库 1.6.0 版本开始,不再维护 audio 组件,建议在微信小程序平台使用
[
uni.createInnerAudioContext
](
/api/media/audio-context?id=createinneraudiocontext
)
替代。
**注意:**
微信小程序平台自基础库 1.6.0 版本开始,不再维护 audio 组件,推荐使用API方式而不是组件方式来播放音频。API见
[
uni.createInnerAudioContext
](
/api/media/audio-context?id=createinneraudiocontext
)
替代。
app-nvue也不支持此组件。
**属性说明**
...
...
@@ -66,4 +68,4 @@ export default {
}
```
![
uniapp
](
https://img-cdn-qiniu.dcloud.net.cn/uniapp/doc/img/audio.png
)
\ No newline at end of file
![
uniapp
](
https://img-cdn-qiniu.dcloud.net.cn/uniapp/doc/img/audio.png
)
docs/component/barcode.md
浏览文件 @
f150bfaa
...
...
@@ -2,9 +2,9 @@
app端nvue专用的扫码组件。
注意:
此组件用于app端nvue页面实现内嵌到界面上的扫码。其他场景、其他平台,请使用全屏扫码API:
[
uni.scanCode
](
https://uniapp.dcloud.io/api/system/barcode
)
此组件自HBuilderX 2.1.5+起支持。
-
此组件用于app端nvue页面实现内嵌到界面上的扫码。其他场景、其他平台,请使用全屏扫码API:
[
uni.scanCode
](
https://uniapp.dcloud.io/api/system/barcode
)
-
App下纯nvue项目(manifest中renderer为native),暂不支持uni.scanCode API,此时只能使用barcode组件来替代。
-
此组件自HBuilderX 2.1.5+起支持。
**属性说明**
设置Barcode扫码控件的属性,如扫码框、扫码条的颜色等。
...
...
docs/component/camera.md
浏览文件 @
f150bfaa
...
...
@@ -3,15 +3,16 @@
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|x|x|√|x|√|x|
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
QQ小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
:-:|
|x|x|√|x|√|x|
√|
*
在 App 和 H5 端,可以使用API方式来调用全屏摄像头,而不是组件内嵌方式。并且App端和H5端目前无法通过cover-view覆盖摄像头,有相关需求见下方插件。
*
[
uni.chooseImage
](
/api/media/image?id=chooseimage
)
和
[
uni.chooseVideo
](
/api/media/video?id=choosevideo
)
可以拍照或录像,但它们会同时允许用户选择相册。
*
使用
`plus.camera`
的API可以直接调起全屏的摄像头,详见:
[
https://www.html5plus.org/doc/zh_cn/camera.html
](
http://www.html5plus.org/doc/zh_cn/camera.html
)
调用原生摄像头进行相关操作。
*
如开发身份证扫描、银行卡识别等ocr识别需求,在微信小程序和百度小程序中使用本camera组件,将图片发送给服务器识别,插件市场有封装好的
[
模板
](
https://ext.dcloud.net.cn/search?q=%E5%B0%8F%E7%A8%8B%E5%BA%8F%E7%9B%B8%E6%9C%BA
)
;在App端使用
[
原生插件
](
https://ext.dcloud.net.cn/search?q=ocr
)
*
活体检测、人脸识别另见文档
[
生物认证
](
/api/other/authentication
)
*
app-nvue下支持barcode组件,可实现自定义扫码。
[
参考
](
https://uniapp.dcloud.io/component/barcode
)
**属性说明**
...
...
docs/component/canvas.md
浏览文件 @
f150bfaa
...
...
@@ -19,7 +19,7 @@
*
canvas 标签默认宽度 300px、高度 225px,动态修改 canvas 大小后需要重新绘制。
*
同一页面中的 canvas-id 不可重复,如果使用一个已经出现过的 canvas-id,该 canvas 标签对应的画布将被隐藏并不再正常工作。
*
canvas 在微信小程序、百度小程序
中为原生组件,层级高于前端组件,请勿内嵌在 scroll-view、swiper、picker-view、movable-view 中使用。解决 canvas 层级过高无法覆盖,参考
[
native-component
](
/component/native-component
)
。
*
canvas 在微信小程序、百度小程序
、QQ小程序中为原生组件,层级高于前端组件,请勿内嵌在 scroll-view、swiper、picker-view、movable-view 中使用。解决 canvas 层级过高无法覆盖,参考
[
native-component
](
/component/native-component
)
。
*
canvas 在App端 vue 页面不是原生组件,目前App端 nvue 还不支持 canvas 组件。
**示例:**
...
...
docs/component/cell.md
浏览文件 @
f150bfaa
#### cell
app端nvue专用组件。
app端nvue专用组件。
它的重要价值在于告诉原生引擎,哪些部分是可重用的。
`<cell>`
Cell 必须以一级子组件的形式存在于
`list recycler waterfall`
中。
...
...
docs/component/cover-view.md
浏览文件 @
f150bfaa
...
...
@@ -5,9 +5,9 @@
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|√|√|√|√|x|
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
QQ小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
:-:|
|√|√|√|√|√|x|
√|
支持的事件:
`click`
...
...
@@ -16,9 +16,9 @@
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|√|√|x|√|x|
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
QQ小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
:-:|
|√|√|√|x|√|x|
√|
**属性说明**
...
...
@@ -40,6 +40,7 @@
-
linebreak
-
white-space
注意:nvue的cover-view不在上述限制中,它仅支持且全部支持nvue的所有css。
**Tips**
...
...
docs/component/editor.md
浏览文件 @
f150bfaa
...
...
@@ -14,9 +14,9 @@
**平台差异说明**
|App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|2.0.0+
[
自定义组件编译模式
](
https://ask.dcloud.net.cn/article/35843
)
,不含nvue|x|基础库 2.7.0+|x|x|x|
|App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
QQ小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
:-:|
|2.0.0+
[
自定义组件编译模式
](
https://ask.dcloud.net.cn/article/35843
)
,不含nvue|x|基础库 2.7.0+|x|x|x|
x|
本功能自HBuilderX2.0起支持。运行到微信小程序工具时,注意在微信工具里选择最新的基础库。
...
...
docs/component/icon.md
浏览文件 @
f150bfaa
...
...
@@ -6,7 +6,7 @@
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|QQ小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
|√|√|√|√|√|√|√|
|√|√
(2.2.3+)
|√|√|√|√|√|
**Tips**
...
...
docs/component/input.md
浏览文件 @
f150bfaa
...
...
@@ -23,7 +23,7 @@
|selection-end|Number|-1|光标结束位置,自动聚集时有效,需与selection-start搭配使用||
|adjust-position|Boolean|true|键盘弹起时,是否自动上推页面|5+App(softinputMode 为 adjustResize 时无效)、微信小程序、百度小程序、QQ小程序|
|@input|EventHandle||当键盘输入时,触发input事件,event.detail = {value}|差异见下方 Tips|
|@focus|EventHandle||输入框聚焦时触发,event.detail = { value, height },height 为键盘高度|仅微信小程序、5+App(HBuilderX 2.
0+
[
nvue uni-app模式
](
http://ask.dcloud.net.cn/article/36074
)
) 、QQ小程序支持 height|
|@focus|EventHandle||输入框聚焦时触发,event.detail = { value, height },height 为键盘高度|仅微信小程序、5+App(HBuilderX 2.
2.3
) 、QQ小程序支持 height|
|@blur|EventHandle||输入框失去焦点时触发,event.detail = {value: value}||
|@confirm|EventHandle||点击完成按钮时触发,event.detail = {value: value}|
|
...
...
@@ -103,7 +103,7 @@ App平台软键盘弹出有 adjustResize|adjustPan 两种模式,默认为 adju
-
adjustResize:软键盘弹出时,webview窗体高度挤压。屏幕高度=webview窗体高度+软键盘高度
-
adjustPan:软键盘弹出时,webview窗体高度不变,但窗体上推,以保证输入框不被软键盘盖住
配置方式,在 pages.json 中配置 style
配置方式,在 pages.json 中配置 style
```
json
"app-plus"
:
{
...
...
@@ -114,7 +114,7 @@ App平台软键盘弹出有 adjustResize|adjustPan 两种模式,默认为 adju
App端开发聊天类应用时,目前推荐改为adjustResize模式。在hello uni-app的模板-聊天中有详细示例。
**注意**
-
adjustResize模式在Android App上,弹起键盘和收回键盘时,因为要重设webview
高度,可能会临时性出现灰屏或漏出下层页面内容。后续会优化
-
adjustResize模式在Android App上,弹起键盘和收回键盘时,因为要重设webview
窗体高度,可能会临时性出现灰屏或漏出下层页面内容。
-
小程序端在 input 聚焦期间,避免使用 css 动画。
-
H5平台只能在用户交互时修改 focus 生效。
-
如果遇到 focus 属性设置不生效的问题参考:
[
组件属性设置不生效解决办法
](
/use?id=%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98
)
...
...
docs/component/list.md
浏览文件 @
f150bfaa
#### list
app端nvue专用组件。
app端nvue专用组件。
在app-nvue下,如果是长列表,使用list组件的性能高于使用view或scroll-view的滚动。原因在于list在不可见部分的渲染资源回收有特殊的优化处理。
`<list>`
组件是提供垂直列表功能的核心组件,拥有平滑的滚动和高效的内存管理,非常适合用于长列表的展示。最简单的使用方法是在
`<list>`
标签内使用一组由简单数组循环生成的
`<cell>`
标签填充。
...
...
docs/component/live-player.md
浏览文件 @
f150bfaa
...
...
@@ -6,11 +6,11 @@
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|x
|x|√|x|√|x
|
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
QQ小程序
|:-:|:-:|:-:|:-:|:-:|:-:|
:-:|
|x
(见下)|x|√|x|√|x|√
|
-
5+
App的实时音视频播放,不是使用 live-player,而是直接使用 video 组件。
-
App的实时音视频播放,不是使用 live-player,而是直接使用 video 组件。
-
H5 下可用 video 播放符合 HTML5 规范的流媒体,rtmp 等非 HTML5 标准的流媒体格式,仅在部分支持 flash 的国内手机浏览器上可播放。在 pc 浏览器上,需要安装 flash 插件才能播放 rtmp 等格式。
...
...
@@ -40,6 +40,7 @@
*
live-player 是原生组件,层级高于前端组件,请勿在 scroll-view、swiper、picker-view、movable-view 中使用
*
小程序下覆盖live-player需要使用cover-view。
[
详见
](
/component/native-component
)
*
live-player 组件相关 JS API:
[
createLivePlayerContext
](
/api/media/live-player-context
)
*
小程序平台使用live-player有审核限制,请注意参考各家文档,
**状态码**
...
...
@@ -106,4 +107,4 @@ export default {
}
}
}
```
\ No newline at end of file
```
docs/component/live-pusher.md
浏览文件 @
f150bfaa
...
...
@@ -2,12 +2,13 @@
实时音视频录制,也称直播推流。
各平台开发方式暂未统一,使用时需注意用
[
条件编译
](
https://uniapp.dcloud.io/platform
)
调用不同平台的代码
。
目前只有App和微信小程序支持
。
-
微信小程序:
[
规范文档
](
https://developers.weixin.qq.com/miniprogram/dev/component/live-pusher.html
)
-
App平台:
[
业务指南
](
https://ask.dcloud.net.cn/article/13416
)
、
[
规范文档
](
http://www.html5plus.org/doc/zh_cn/video.html#plus.video.LivePusher
)
-
App平台:nvue文件下也支持live-pusher组件,API与微信相同。如果是vue文件,则需要单独编写条件编译代码,使用plus.video.LivePusher,
[
业务指南
](
https://ask.dcloud.net.cn/article/13416
)
、
[
规范文档
](
http://www.html5plus.org/doc/zh_cn/video.html#plus.video.LivePusher
)
**注意**
*
live-pusher 是原生组件,层级高于前端组件,请勿在 scroll-view、swiper、picker-view、movable-view 中使用
*
解决 live-pusher 层级过高无法覆盖,
[
参考
](
/component/native-component
)
\ No newline at end of file
*
live-pusher 是原生组件,在小程序端层级高于前端组件,请勿在 scroll-view、swiper、picker-view、movable-view 中使用,需使用cover-view覆盖。在App端的nvue文件中,live-pusher没有这类限制。
*
App平台:使用
`<live-pusher/>`
组件,打包 App 时必须勾选 manifest.json->App 模块权限配置->LivePusher(直播推流) 模块。
docs/component/map.md
浏览文件 @
f150bfaa
...
...
@@ -4,9 +4,9 @@
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|√|√|√|√|x|
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
QQ小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
:-:|
|√|√|√|√|√|x|
x|
**属性说明**
...
...
@@ -174,11 +174,12 @@ map 组件相关操作的 JS API:[uni.createMapContext](api/location/map?id=cr
**注意事项**
-
小程序和 App 中,
`<map>`
组件是由引擎创建的原生组件,它的层级是最高的,不能通过 z-index 控制层级。在
`<map>`
上绘制内容,可使用组件自带的marker、controls等属性,也可以使用
`<cover-view>`
组件。App端还可以使用plus.nativeObj.view 或 subNVue 绘制原生内容。
[
详见
](
/component/native-component
)
-
小程序和 App的vue文件 中,
`<map>`
组件是由引擎创建的原生组件,它的层级是最高的,不能通过 z-index 控制层级。在
`<map>`
上绘制内容,可使用组件自带的marker、controls等属性,也可以使用
`<cover-view>`
组件。App端还可以使用plus.nativeObj.view 或 subNVue 绘制原生内容,
[
参考
](
/component/native-component
)
。另外App端nvue文件不存在层级问题。
-
App端nvue文件的map和小程序拉齐度更高。vue里的map则与plus.map功能一致,和小程序的地图略有差异。
-
小程序和 App 中,请勿在 scroll-view、swiper、picker-view、movable-view 中使用
`<map>`
组件。
-
小程序和 App 中,css 动画对
`<map>`
组件无效。
-
map 组件使用的经纬度是国测局坐标,调用 uni.getLocation 接口需要指定 type 为 gcj02。
-
`<map>`
组件在不同平台的底层引擎是不同的:H5、微信小程序为腾讯地图;App、支付宝小程序为高德地图;百度小程序端为百度地图。App端
也可以使用百度地图,在manifest的源码视图中配置,具体
[
参考
](
http://ask.dcloud.net.cn/article/29
)
-
`<map>`
组件在不同平台的底层引擎是不同的:H5、微信小程序为腾讯地图;App、支付宝小程序为高德地图;百度小程序端为百度地图。App端
vue页面也可以使用百度地图,在manifest中配置,但nvue页面只支持高德地图。
-
map 组件默认的api是参考微信小程序的,如果觉得不够用,可以用plus.map,可以通过
`$getAppMap`
获取原生地图对象,
[
详见
](
https://uniapp.dcloud.io/api/location/map
)
-
H5 端获取定位信息,需要部署在
**https**
服务上,本地预览(localhost)仍然可以使用 http 协议。
-
无 GPS 模块的 PC 设备使用 Chrome 浏览器的时候,位置信息是连接谷歌服务器获取的,国内用户可能获取位置信息失败。
...
...
docs/component/movable-view.md
浏览文件 @
f150bfaa
...
...
@@ -4,9 +4,9 @@
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|√|√|√|√|x|
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
QQ小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
:-:|
|√|√|√|√|√|x|
√|
**属性说明**
...
...
@@ -14,7 +14,7 @@
|:-|:-|:-|:-|
|scale-area|Boolean|false|当里面的 movable-view 设置为支持双指缩放时,设置此值可将缩放手势生效区域修改为整个 movable-area|
**注意:movable-area 必须设置 width 和 height 属性,不设置默认为 10px**
**注意:movable-area 必须设置 width 和 height 属性,不设置默认为 10px**
-
movable-area app-nvue平台 暂不支持手势缩放
#### movable-view
...
...
@@ -23,9 +23,9 @@
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|√|√|√|√|x|
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
QQ小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
:-:|
|√|√|√|√|√|x|
√|
**属性说明**
...
...
@@ -121,4 +121,4 @@ export default {
}
```
!
[
uni
](
https://img-cdn-qiniu.dcloud.net.cn/uniapp/doc/img/moveable-view.png
)
\ No newline at end of file
!
[
uni
](
https://img-cdn-qiniu.dcloud.net.cn/uniapp/doc/img/moveable-view.png
)
docs/component/open-data.md
浏览文件 @
f150bfaa
...
...
@@ -4,21 +4,23 @@
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|x|x|√|x|√|x|
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
QQ小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
:-:|
|x|x|√|x|√|x|
√|
**Tips**
该功能为微信、百度、支付宝、头条等平台提供的开放能力。App端和H5端不涉及此概念。
该功能为各小程序平台提供的开放能力。App端和H5端不涉及此概念。
支付宝和头条没有open-data组件,但提供了API方式获取相关信息。支付宝
[
参考
](
https://docs.alipay.com/mini/api/ch8chh
)
、头条
[
参考
](
https://developer.toutiao.com/docs/open/getUserInfo.html
)
**属性说明**
|属性名|类型|默认值|说明|平台差异说明|
|:-:|:-:|:-:|:-:|:-:|
|type|String||开放数据类型||
|open-gid|String||当 type="groupName" 时生效, 群id|微信小程序|
|lang|String|en|当 type="user
*
" 时生效,以哪种语言展示 userInfo,有效值有:en, zh_CN, zh_TW|微信小程序|
|open-gid|String||当 type="groupName" 时生效, 群id|微信小程序
、QQ小程序
|
|lang|String|en|当 type="user
*
" 时生效,以哪种语言展示 userInfo,有效值有:en, zh_CN, zh_TW|微信小程序
、QQ小程序
|
**type 有效值**
...
...
@@ -27,11 +29,11 @@
|userNickName|用户昵称||
|userAvatarUrl|用户头像||
|userGender|用户性别||
|groupName|拉取群名称|微信小程序|
|userCity|用户所在城市|微信小程序|
|userProvince|用户所在省份|微信小程序|
|userCountry|用户所在国家|微信小程序|
|userLanguage|用户的语言|微信小程序|
|groupName|拉取群名称|微信小程序
、QQ小程序
|
|userCity|用户所在城市|微信小程序
、QQ小程序
|
|userProvince|用户所在省份|微信小程序
、QQ小程序
|
|userCountry|用户所在国家|微信小程序
、QQ小程序
|
|userLanguage|用户的语言|微信小程序
、QQ小程序
|
**示例**
...
...
docs/component/picker.md
浏览文件 @
f150bfaa
...
...
@@ -26,7 +26,7 @@
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|
√
|√|√|x|√|√|
|
vue支持,nvue不支持
|√|√|x|√|√|
**属性说明**
...
...
@@ -41,7 +41,7 @@
|@cancel|EventHandle||取消选择时触发|
|disabled|Boolean|false|是否禁用|
**bug & tips**
**bug & tips**
-
由于 JavaScript 的限制 vue 不能观测如下方式设置 value:
``this.value[0] = 0``
(
[
vue 注意事项
](
https://cn.vuejs.org/v2/guide/list.html#注意事项
)
),解决方式参考:
[
hello-uniapp 示例
](
https://github.com/dcloudio/hello-uniapp/commit/59264474172a591c865431d02a2a1e3583978827
)
-
微信开发工具的pc模拟器有可能出现拖动数据错乱,使用真机正常
...
...
@@ -227,4 +227,4 @@ export default {
**注意**
-
在picker内容还在滚动时或滚动回弹动画还未结束时,点确定关闭弹出的picker,数据无法及时更新。需等待一下,或手动触停滚动再点确定。所有平台均如此
-
app-nvue 平台,mode 目前仅支持
``selector``
``time``
``date``
\ No newline at end of file
-
app-nvue 平台,mode 目前仅支持
``selector``
``time``
``date``
docs/component/recycle-list.md
浏览文件 @
f150bfaa
...
...
@@ -2,7 +2,7 @@
app端nvue专用组件。
`<recycle-list>`
是一个新的列表容器,具有回收和复用的能力,可以大幅优化内存占用和渲染性能。
`<recycle-list>`
是一个新的列表容器,具有回收和复用的能力,可以大幅优化内存占用和渲染性能。
它的性能比list组件更高,但写法受限制。它除了会释放不可见区域的渲染资源,在非渲染的数据结构上也有更多优化。
此组件自HBuilderX 2.1.5+起支持。
...
...
docs/component/refresh.md
浏览文件 @
f150bfaa
...
...
@@ -2,7 +2,7 @@
app端nvue专用组件。
`<refresh>`
为容器提供下拉刷新功能。
`<refresh>`
为容器提供下拉刷新功能。
在nvue上,可通过此组件实现灵活的、自定义的、高性能的下拉刷新。
> 注意
...
...
@@ -14,9 +14,9 @@ app端nvue专用组件。
<refresh>
<text>Refreshing...</text>
</refresh>
<
div
v-for="num in lists">
<
view
v-for="num in lists">
<text>{{num}}</text>
</
div
>
</
view
>
</scroll-view>
```
...
...
docs/component/rich-text.md
浏览文件 @
f150bfaa
...
...
@@ -7,12 +7,12 @@
|:-|:-|:-|:-|
|nodes|Array / String|[]|节点列表 / HTML String|
**注意**
**注意**
-
app-nvue 平台 nodes 属性只支持使用 Array 类型
-
支付宝小程序 nodes 属性只支持使用 Array 类型。
-
支付宝小程序 nodes 属性只支持使用 Array 类型。
如果需要支持 HTML String,则需要自己将 HTML String转化为 nodes 数组,可使用
[
html-parser
](
https://github.com/dcloudio/hello-uniapp/blob/master/common/html-parser.js
)
转换。
支持默认事件,包括:click、touchstart、touchmove、touchcancel、touchend、longpress。
...
...
@@ -136,9 +136,9 @@ export default {
**Tips**
-
nodes 不推荐使用 String 类型,性能会有所下降。
-
rich-text 组件内屏蔽所有节点的事件。所以如果内容中有链接、图片需要点击,则不能使用rich-text,此时可在
[
uni-app插件市场
](
https://ext.dcloud.net.cn/
)
搜索uparse插件使用。
-
rich-text 组件内屏蔽所有节点的事件。所以如果内容中有链接、图片需要点击,则不能使用rich-text,此时可在
[
uni-app插件市场
](
https://ext.dcloud.net.cn/
)
搜索uparse插件使用。
app-nvue的rich-text组件支持链接图片点击,且nvue下不能使用uparse等插件。
-
attrs 属性不支持 id ,支持 class 。
-
name 属性大小写不敏感。
-
如果使用了不受信任的HTML节点,该节点及其所有子节点将会被移除。
-
img 标签仅支持网络图片。
-
如果在自定义组件中使用 rich-text 组件,那么仅自定义组件的 css 样式对 rich-text 中的 class 生效。
\ No newline at end of file
-
如果在自定义组件中使用 rich-text 组件,那么仅自定义组件的 css 样式对 rich-text 中的 class 生效。
docs/component/swiper.md
浏览文件 @
f150bfaa
...
...
@@ -8,20 +8,28 @@
|:-|:-|:-|:-|:-|
|indicator-dots|Boolean|false|是否显示面板指示点||
|indicator-color|Color|rgba(0, 0, 0, .3)|指示点颜色||
|indicator-active-color|Color|#000000|当前选中的指示点颜色||
|indicator-active-color|Color|#000000|当前选中的指示点颜色||
|active-class|String||swiper-item 可见时的 class|支付宝小程序|
|changing-class|String||acceleration 设置为 {{true}} 时且处于滑动过程中,中间若干屏处于可见时的class|支付宝小程序|
|autoplay|Boolean|false|是否自动切换||
|current|Number|0|当前所在滑块的 index||
|current-item-id|String||当前所在滑块的 item-id ,不能与 current 被同时指定|
微信小程序、5+App、H5、百度小程序、头条小程序
|
|current-item-id|String||当前所在滑块的 item-id ,不能与 current 被同时指定|
支付宝小程序不支持
|
|interval|Number|5000|自动切换时间间隔||
|duration|Number|500|滑动动画时长||
|circular|Boolean|false|是否采用衔接滑动||
|vertical|Boolean|false|滑动方向是否为纵向||
|previous-margin|String|0px|前边距,可用于露出前一项的一小部分,接受 px 和 rpx 值|头条小程序不支持|
|next-margin|String|0px|后边距,可用于露出后一项的一小部分,接受 px 和 rpx 值|头条小程序不支持|
|display-multiple-items|Number|1|同时显示的滑块数量|微信小程序、5+App、H5、百度小程序、头条小程序|
|skip-hidden-item-layout|Boolean|false|是否跳过未显示的滑块布局,设为 true 可优化复杂情况下的滑动性能,但会丢失隐藏状态滑块的布局信息|微信小程序、5+App|
|@change|EventHandle||current 改变时会触发 change 事件,event.detail = {current: current, source: source}||
|@animationfinish|EventHandle||动画结束时会触发 animationfinish 事件,event.detail 同上|头条小程序不支持|
|next-margin|String|0px|后边距,可用于露出后一项的一小部分,接受 px 和 rpx 值|头条小程序不支持|
|acceleration|Boolean|false|当开启时,会根据滑动速度,连续滑动多屏|支付宝小程序|
|disable-programmatic-animation|Boolean|false|是否禁用代码变动触发 swiper 切换时使用动画。|支付宝小程序|
|display-multiple-items|Number|1|同时显示的滑块数量|支付宝小程序不支持|
|skip-hidden-item-layout|Boolean|false|是否跳过未显示的滑块布局,设为 true 可优化复杂情况下的滑动性能,但会丢失隐藏状态滑块的布局信息|微信小程序、5+App|
|disable-touch|Boolean|false|是否禁止用户 touch 操作|支付宝小程序|
|touchable|Boolean|true|是否监听用户的触摸事件|头条小程序|
|easing-function|String|default|指定 swiper 切换缓动动画类型,有效值:default、linear、easeInCubic、easeOutCubic、easeInOutCubic|微信小程序|
|@change|EventHandle||current 改变时会触发 change 事件,event.detail = {current: current, source: source}||
|@transition|EventHandle||swiper-item 的位置发生改变时会触发 transition 事件,event.detail = {dx: dx, dy: dy}|微信小程序、5+App、支付宝小程序、头条小程序、QQ小程序|
|@animationfinish|EventHandle||动画结束时会触发 animationfinish 事件,event.detail 同上|头条小程序不支持|
change 事件返回 detail 中包含一个 source 字段,表示导致变更的原因,可能值如下:
...
...
docs/component/video.md
浏览文件 @
f150bfaa
...
...
@@ -139,7 +139,7 @@ export default {
*
其他端无法全屏后自行绘制内容
-
如何实现抖音、映客等全屏视频垂直滑动切换效果?
*
微信基础库 2.4.0 和
app端nvue 2.1.5 以上,可通过在垂直的swiper中内嵌video来实现。原生导航栏设置为custom,视频长宽设为手机屏幕大小,通过cover-view覆盖视频内容。
*
微信基础库 2.4.0 和
app端nvue 2.1.5 以上,可通过在垂直的swiper中内嵌video来实现。原生导航栏设置为custom,视频长宽设为手机屏幕大小,通过cover-view覆盖视频内容。插件市场有相关
[
示例
](
https://ext.dcloud.net.cn/search?q=%E6%8A%96%E9%9F%B3
)
-
`<video/>`
组件在非H5端是原生组件,层级高于普通前端组件,覆盖其需要使用
[
cover-view
](
https://uniapp.dcloud.io/component/cover-view?id=cover-view
)
组件或plus.nativeObj.view、subNVue。微信基础库 2.4.0 起已支持 video 组件的同层渲染,也就是video在非全屏时,可以被前端元素通过调节zindex来遮挡,但video全屏时,仍需要cover-view覆盖。
-
除微信基础库 2.4.0 和app端nvue页面 2.1.5 以上,其他情况下非H5的video不能放入scroll-view和swiper。注意参考
[
原生组件使用限制
](
/component/native-component
)
。
...
...
docs/component/waterfall.md
浏览文件 @
f150bfaa
...
...
@@ -4,6 +4,8 @@ app端nvue专用组件。
`<waterfall>`
组件是提供瀑布流布局的核心组件。瀑布流,又称瀑布流式布局是比较流行的一种页面布局,视觉表现为参差不齐的多栏布局。随着页面滚动条向下滚动,这种布局还可以不断加载数据块并附加至当前尾部。
使用普通view做瀑布流,无法实现重用和不可见渲染资源释放。使用
<waterfall>
组件,指定cell后,原生引擎会自动优化性能。
```
<template>
<waterfall column-count="2" column-width="auto">
...
...
docs/component/web-view.md
浏览文件 @
f150bfaa
...
...
@@ -14,10 +14,10 @@
**src**
|来源|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-|:-:|:-:|:-:|:-:|:-:|:-:|
|网络|√|√|√|√|√|√|
|本地|√|暂不支持|x|x|x|x|
|来源|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
QQ小程序|
|:-|:-:|:-:|:-:|:-:|:-:|:-:|
:-:|
|网络|√|√|√|√|√|√|
√|
|本地|√|暂不支持|x|x|x|x|
x|
**webview-styles**
...
...
@@ -239,4 +239,4 @@ Q:web-view 的页面怎么和应用内的页面交互?
A:调用 uni 相关的 API,就可以实现页面切换及发送消息。参考:
[
在 web-view 加载的 HTML 中调用 uni 的 API
](
https://ask.dcloud.net.cn/article/35083
)
Q:web-view 加载的 HTML 中,能够调用 5+ 的能力么?
A:加载的 HTML 中是有 5+ 环境的,在 plusready 后调用即可。参考:
[
一个简单实用的 plusready 方法
](
https://ask.dcloud.net.cn/article/34922
)
\ No newline at end of file
A:加载的 HTML 中是有 5+ 环境的,在 plusready 后调用即可。参考:
[
一个简单实用的 plusready 方法
](
https://ask.dcloud.net.cn/article/34922
)
docs/frame.md
浏览文件 @
f150bfaa
...
...
@@ -348,7 +348,7 @@ uni-app 提供内置 CSS 变量
|CSS变量|描述|5+App|小程序|H5|
|:-|:-|:-|:-|:-|
|--status-bar-height|系统状态栏高度|[系统状态栏高度](http://www.html5plus.org/doc/zh_cn/navigator.html#plus.navigator.getStatusbarHeight)|25px|0|
|--status-bar-height|系统状态栏高度|[系统状态栏高度](http://www.html5plus.org/doc/zh_cn/navigator.html#plus.navigator.getStatusbarHeight)
、nvue注意见下
|25px|0|
|--window-top|内容区域距离顶部的距离|0|0|NavigationBar 的高度|
|--window-bottom|内容区域距离底部的距离|0|0|TabBar 的高度|
...
...
@@ -357,14 +357,14 @@ uni-app 提供内置 CSS 变量
- ``var(--status-bar-height)`` 此变量在微信小程序环境为固定 ``25px``,在 5+App 里为手机实际状态栏高度。
- 当设置 ``"navigationStyle":"custom"`` 取消原生导航栏后,由于窗体为沉浸式,占据了状态栏位置。此时可以使用一个高度为 ``var(--status-bar-height)`` 的 view 放在页面顶部,避免页面内容出现在状态栏。
- 由于在H5端,不存在原生导航栏和tabbar,也是前端div模拟。如果设置了一个固定位置的居底view,在小程序和App端是在tabbar上方,但在H5端会与tabbar重叠。此时可使用`--window-bottom`,不管在哪个端,都是固定在tabbar上方。
- 目前 nvue
还不支持css变量
- 目前 nvue
在App端,还不支持 `--status-bar-height`变量,替代方案是在页面onLoad时通过uni.getSystemInfoSync().statusBarHeight获取状态栏高度,然后通过style绑定方式给占位view设定高度。下方提供了示例代码
**代码块**
快速书写css变量的方法是:在css中敲hei,在候选助手中即可看到3个css变量。(HBuilderX 1.9.6以上支持)
示例:
示例
1 - 普通页面使用css变量
:
```
html
<template>
...
...
@@ -398,6 +398,28 @@ uni-app 提供内置 CSS 变量
</style>
```
示例2 - nvue页面获取状态栏高度
```
html
<template>
<view
class=
"content"
>
<view
:style=
"{ height: iStatusBarHeight + 'px'}"
></view>
</view>
</template>
<script>
export default {
data() {
return {
iStatusBarHeight:0
}
},
onLoad() {
this.iStatusBarHeight = uni.getSystemInfoSync().statusBarHeight
}
}
</script>
```
### 固定值
`uni-app` 中以下组件的高度是固定的,不可修改:
...
...
@@ -913,10 +935,198 @@ slide-view.vue
详细的小程序转uni-app语法差异可参考文档[https://ask.dcloud.net.cn/article/35786](https://ask.dcloud.net.cn/article/35786)。
## WXS
WXS是微信小程序的一套脚本语言,[规范详见](https://developers.weixin.qq.com/miniprogram/dev/framework/view/wxs/)。
uni-app可以将wxs代码编译到微信小程序、QQ小程序、5+APP上(`HBuilderX 2.2.4-alpha`及以上版本)
与wxs类似,百度小程序提供了Filter、阿里小程序提供了SJS,uni-app也支持使用这些功能,并将它们编译到百度和阿里的小程序端。不过它们的功能还不如wxs强大。此外头条系小程序自身不支持类似功能。
**wxs示例**
以下是一些使用 WXS 的简单示例,要完整了解 WXS 语法,请参考[WXS 语法参考](https://developers.weixin.qq.com/miniprogram/dev/reference/wxs/)。本示例使用wxs响应touchmove事件,减少视图层与逻辑层通信,使滑动更加丝滑。
```
html
<template>
<view>
<view
class=
"area"
>
<view @touchstart="test.touchstart" @touchmove="test.touchmove" class="movable">{{test.msg}}</view>
</view>
</view>
</template>
<wxs
module=
"test"
>
var startX = 0
var startY = 0
var lastLeft = 50; var lastTop = 50
function touchstart(event, ins) {
console.log("touchstart")
var touch = event.touches[0] || event.changedTouches[0]
startX = touch.pageX
startY = touch.pageY
}
function touchmove(event, ins) {
var touch = event.touches[0] || event.changedTouches[0]
var pageX = touch.pageX
var pageY = touch.pageY
var left = pageX - startX + lastLeft
var top = pageY - startY + lastTop
startX = pageX
startY = pageY
lastLeft = left
lastTop = top
ins.selectComponent('.movable').setStyle({
left: left + 'px',
top: top + 'px'
})
return false
}
module.exports = {
msg: 'Hello',
touchstart: touchstart,
touchmove: touchmove
}
</wxs>
<script>
export default {
data() {
return {
}
},
methods: {
}
}
</script>
<style>
.area{
position: absolute;
width: 100%;
height: 100%;
}
.movable{
position: absolute;
width: 100px;
height: 100px;
left: 50px;
top: 50px;
color: white;
text-align: center;
line-height: 100px;
background-color: red;
}
</style>
```
支付宝小程序,百度小程序官方暂未支持事件响应,不过也可以使用对应的SJS、Filter过滤器实现一些数据处理的操作,以下代码展示了一个时间格式化的小功能
index.vue
```
html
<template>
<view>
<view>
{{timestr}} 是
</view>
<view>
{{utils.friendlyDate(timestamp)}}
</view>
</view>
</template>
<filter
module=
"utils"
src=
"./utils.filter.js"
></filter>
<import-sjs
module=
"utils"
src=
"./utils.sjs"
/>
<script>
export default {
data() {
return {
timestr: '2019/08/22 10:10:10',
timestamp: 0
}
},
created() {
this.timestamp = new Date(this.timestr).getTime()
},
methods: {
}
}
</script>
```
utils.sjs 与 utils.filter.js
```
js
export default {
friendlyDate: (timestamp) => {
var formats = {
'year': '%n% 年前',
'month': '%n% 月前',
'day': '%n% 天前',
'hour': '%n% 小时前',
'minute': '%n% 分钟前',
'second': '%n% 秒前',
};
var now = Date.now();
var seconds = Math.floor((now - parseInt(timestamp)) / 1000);
var minutes = Math.floor(seconds / 60);
var hours = Math.floor(minutes / 60);
var days = Math.floor(hours / 24);
var months = Math.floor(days / 30);
var years = Math.floor(months / 12);
var diffType = '';
var diffValue = 0;
if (years > 0) {
diffType = 'year';
diffValue = years;
} else {
if (months > 0) {
diffType = 'month';
diffValue = months;
} else {
if (days > 0) {
diffType = 'day';
diffValue = days;
} else {
if (hours > 0) {
diffType = 'hour';
diffValue = hours;
} else {
if (minutes > 0) {
diffType = 'minute';
diffValue = minutes;
} else {
diffType = 'second';
diffValue = seconds === 0 ? (seconds = 1) : seconds;
}
}
}
}
}
return formats[diffType].replace('%n%', diffValue);
}
}
```
**注意**
- **重要**编写wxs、sjs、filter.js 内容时必须遵循相应语法规范
- 目前各个小程序正在完善相关规范,可能会有较大改动,请务必仔细阅读相应平台的文档
- 支付宝小程序请使用sjs规范,[详见](https://docs.alipay.com/mini/framework/sjs)
- 支付宝小程序sjs只能定义在.sjs 文件中。然后使用```<import-sjs>```标签引入
- 支付宝小程序import-sjs的标签属性```name```、```from```被统一为了```module```、```src```以便后续实现多平台统一写法
- 百度小程序中请使用Filter规范,[详见](https://smartprogram.baidu.com/docs/develop/framework/view_filter/)
- 百度小程序Filter只能导出function函数
- 暂不支持在 wxs、sjs、filter.js 中调用其他同类型文件
- wxs、filter.js既能内联使用又可以外部引入,sjs只能外部引入
- mp-qq 目前对内联的 wxs 支持不好,部分写法会导致编译出错
- 在微信自定义组件中(wxcomponents)也可以使用wxs
## 致谢
```
uni-app
```的设计使用了 ```
vue + 自定义组件
``` 的模式;开发者使用```
Vue
```语法,了解```
uni-app
```的组件,就可以开发跨端App;感谢```
Vue
```团队!
为了照顾开发者的已有学习积累,```
uni-app
```的组件和api设计,基本参考了微信小程序,学过微信小程序开发,了解```
vue
```,就能直接上手```
uni-app
```;感谢微信小程序团队!
```
uni-app
```
在小程序端,学习参考了
[
mpvue
](
http://mpvue.com/
)
及
[
Megalo
](
https://megalojs.org/
)
,感谢美团点评技术团队、网易考拉团队!
```
uni-app
```
在小程序端,学习参考了
[
mpvue
](
http
s
://mpvue.com/
)
及
[
Megalo
](
https://megalojs.org/
)
,感谢美团点评技术团队、网易考拉团队!
docs/matter.md
浏览文件 @
f150bfaa
...
...
@@ -187,3 +187,6 @@ H5没有原生组件概念问题,非H5端有原生组件并引发了原生组
*
``getSystemInfo``
获取到的
``windowHeight``
在模拟器中值不正确,真机预览是正确的。
*
``v-if``
和
``v-for``
不可在同一标签下同时使用。
*
页面中引入自定义组件时,渲染的结果中外层会有一个
``template``
标签,这会导致部分选择器对应的样式匹配不上。
### 各家小程序的浏览器内核不同,会造成css兼容性问题
查阅细节参考:
[
https://ask.dcloud.net.cn/article/1318
](
https://ask.dcloud.net.cn/article/1318
)
docs/quickstart.md
浏览文件 @
f150bfaa
...
...
@@ -218,6 +218,8 @@ npm run build:%PLATFORM%
|mp-toutiao|头条小程序|
|mp-qq|qq 小程序|
可以自定义更多条件编译平台,比如钉钉小程序,参考
[
package.json文档
](
https://uniapp.dcloud.io/collocation/package
)
。
**其他:**
*
dev 模式编译出的各平台代码存放于根目录下的
``/dist/dev/``
目录,打开各平台开发工具选择对应平台目录即可进行预览(h5 平台不会在此目录,存在于缓存中);
...
...
@@ -237,10 +239,10 @@ npm run build:%PLATFORM%
*
``cli``
版如果想安装less、scss、ts等编译器,需自己手动npm安装。在HBuilderX的插件管理界面安装无效,那个只作用于HBuilderX创建的项目。
#### 开发工具的区别
*
``cli``
创建的项目,内置了d.ts,同其他常规npm库一样,可在
vscode、webstorm
等支持d.ts的开发工具里正常开发并有语法提示。
*
使用HBuilderX创建的项目不带d.ts,
拖到其他工具里不会有代码提示。
此时可以在项目下执行
``npm i @types/uni-app -D``
,来补充d.ts
*
``cli``
创建的项目,内置了d.ts,同其他常规npm库一样,可在
[
vscode
](
https://ask.dcloud.net.cn/article/36286
)
、
[
webstorm
](
https://ask.dcloud.net.cn/article/36307
)
等支持d.ts的开发工具里正常开发并有语法提示。
*
使用HBuilderX创建的项目不带d.ts,此时可以在项目下执行
``npm i @types/uni-app -D``
,来补充d.ts
*
但vscode等其他开发工具,在vue或uni-app领域,开发效率比不过HBuilderX。详见:
[
https://ask.dcloud.net.cn/article/35451
](
https://ask.dcloud.net.cn/article/35451
)
*
发布App时,仍然需要使用HBuilderX。其他开发工具无法发布App,但可以发布H5、各种小程序。
*
发布App时,仍然需要使用HBuilderX。其他开发工具无法发布App,但可以发布H5、各种小程序。
如需开发App,可以先在HBuilderX里运行起来,然后在其他编辑器里修改保存代码,代码修改后会自动同步到手机基座。
*
如果使用
``cli``
创建项目,那下载HBuilderX时只需下载10M的标准版即可。因为编译器已经安装到项目下了。
*
对
`cli`
使用有疑问,欢迎扫码加入 uni-app 微信交流群讨论:
<br/><img
src=
"http://img.cdn.aliyun.dcloud.net.cn/guide/uniapp/wx-barcode.png"
width=
"250"
/>
docs/use-weex.md
浏览文件 @
f150bfaa
...
...
@@ -10,14 +10,43 @@
如果你已经是 weex 的开发者,具有 weex 的填坑能力,那么 nvue 是你的更优选择,能切实提升你的开发效率,降低成本。
如果你不开发App,那么你不太需要nvue。
如果你是web前端,不熟悉 weex,那么建议你仍然以使用 vue 为主,在App端某些 vue 表现不佳的场景下使用 nvue 作为强化补充:
- 左右拖动的长列表。在webview里,通过swiper+scroll-view实现左右拖动的长列表,前端模拟下拉刷新,这套方案的性能不好。此时推荐使用nvue,比如新建uni-app项目时的新闻示例模板,就是首页采用了nvue
- 为了解决 vue 页面的原生控件层级问题和原生导航栏的灵活自定义问题,uni-app 还提供了 subnvue 方案,将一个非全屏的 nvue 页面覆盖到 vue 页面上,[详见](https://ask.dcloud.net.cn/article/35948)
- 如需要将软键盘右下角按钮文字改为“发送”,则需要使用nvue
- 前端控件无法覆盖原生控件的问题。在nvue下,都是原生控件,覆盖map、video等不需要cover-view(如需要发布到小程序,仍然推荐写cover-view)
- 同样因为层级问题得到解决,nvue可以实现video内嵌到swiper中,以实现抖音式视频滑动切换,例子见[插件市场](https://ext.dcloud.net.cn/plugin?id=664);nvue的视频全屏后,仍然可以通过cover-view实现内容覆盖,比如增加文字标题、分享按钮。
- nvue下有live-pusher组件,和小程序对齐。而vue页面下使用直播,需在条件编译里单独调用plus.video的API。
- nvue下的map组件,小程序对齐。而vue页面的map组件有一些差异。
- App端实现粘性布局,比如滚动吸顶,则nvue才能保证高性能,例子见[插件市场](https://ext.dcloud.net.cn/plugin?id=715)
此外,App端,vue页面上也可以覆盖subnvue(一种非全屏的nvue页面覆盖在webview上),以解决App上的原生控件层级问题。[详见](https://ask.dcloud.net.cn/article/35948)
## 项目渲染模式
uni-app在App端,支持vue页面和nvue页面混搭、互相跳转。也支持纯nvue项目。
在manifest.json源码视图的`"app-plus"`下配置`"renderer":"native"`,即代表App端启用纯原生渲染模式。此时pages.json注册的vue页面将被忽略,vue组件中的代码也需覆盖nvue规范,并会被原生渲染。
启动纯原生渲染,可以减少App端的包体积、加快App启动速度。因为webview渲染模式的相关模块将被移除。
如果不指定该值,默认是不启动纯原生渲染的。
```
json
// manifest.json
{
// ...
/
* App平台特有配置 *
/
"app-plus": {
"renderer": "native", //App端纯原生渲染模式
}
}
```
## 编译模式差异
##
nvue页面
编译模式差异
uni-app 深度改进了 weex,提供了2种编译模式,一种是常规的 weex 组件模式,即编写`<div>`。另一种是 uni-app 组件模式,即编写`<view>`。后者更提供了编译为小程序和H5的能力。
uni-app 深度改进了 weex,提供了2种编译模式,一种是常规的 weex 组件模式,即编写`<div>`。另一种是 uni-app 组件模式,即编写`<view>`。后者更提供了编译为小程序和H5的能力
,实现了全端输出
。
也可以理解为uni-app做了一个原生渲染的小程序引擎。
...
...
@@ -31,7 +60,7 @@ uni-app 深度改进了 weex,提供了2种编译模式,一种是常规的 we
|全局样式 |手动引入 |app.vue的样式即为全局样式 |
|页面滚动 |必须给页面套<list>或<scroller>组件 |默认支持页面滚动 |
修改2种编译模式的在 manifest.json 中
,`manifest.json` -> `app-plus` -> `nvueCompiler` 切换编译模式。
在 manifest.json 中修改2种编译模式
,`manifest.json` -> `app-plus` -> `nvueCompiler` 切换编译模式。
`nvueCompiler` 有两个值:
- weex
...
...
@@ -50,21 +79,19 @@ uni-app 深度改进了 weex,提供了2种编译模式,一种是常规的 we
```
* 如果没有在manifest里明确配置,默认是weex模式。这是为了向下兼容。
* 当前uni-app编译模式组件还不够完整,详细列表见 [https://ask.dcloud.net.cn/article/36074](https://ask.dcloud.net.cn/article/36074),但已经可满足常用场景。比如左右拖动的长列表场景推荐使用uni-app编译模式的nvue,其他页面仍然可使用 vue 页面。新建uni-app项目选模板`新闻/资讯模板`,这是一个nvue页面可编译到全平台的示例。
## 快速上手
### 1. 新建 nvue 页面
在
``uni-app`` 项目中,选中文件或文件夹,鼠标右击选择新建 ``nvue`` 文件输入文件名创
建。
在
HBuilderX的 ``uni-app`` 项目中,新建页面,弹出界面右上角可以选择是建立vue页面还是nvue页面,或者2个同时
建。
不管是vue页面还是nvue页面,都需要在pages.json中注册。
不管是vue页面还是nvue页面,都需要在pages.json中注册。
如果在HBuilderX中新建页面是会自动注册的,如果使用其他编辑器,则需要自行在pages.json里注册。
如果一个页面路由下同时有vue页面和nvue页面,
那么在App端,会优先使用n
vue页面。
如果一个页面路由下同时有vue页面和nvue页面,
即出现同名的vue和nvue文件。那么在App端,会优先使用nvue页面,同名的vue文件将不会被编译到App端。而在非App端,会优先使用
vue页面。
在非app端,只有uni-app编译模式的nvue
才会编译。
如果不同名,只有nvue页面,则在非app端,只有uni-app编译模式的nvue文件
才会编译。
![](https://img-cdn-qiniu.dcloud.net.cn/uniapp/doc/created-nvue.png)
### 2. 开发 nvue 页面
...
...
@@ -118,7 +145,7 @@ uni-app 深度改进了 weex,提供了2种编译模式,一种是常规的 we
### 3. 调试 nvue 页面
HBuilderX内置了更好用的weex/uni-app调试工具,[详见](https://uniapp.dcloud.io/snippet?id=%e5%85%b3%e4%ba%8e-app-%e7%9a%84%e8%b0%83%e8%af%95)
HBuilderX内置了更好用的weex/uni-app调试工具,
包括审查界面元素、看log、debug打断点,
[详见](https://uniapp.dcloud.io/snippet?id=%e5%85%b3%e4%ba%8e-app-%e7%9a%84%e8%b0%83%e8%af%95)
## 生命周期
...
...
@@ -343,6 +370,7 @@ Tis:
*
使用方式可参考
[
BindingX 快速开始
](
https://alibaba.github.io/bindingx/guide/cn_guide_start
)
,demo示例可参考
[
BindingX 示例
](
https://alibaba.github.io/bindingx/demos
)
里
``vue``
的相关示例,将实验田里的
``vue``
代码拷贝到
``nvue``
文件里即可。
*
若引入 weex-bindingx 时发现不生效,检查项目路径,路径不能含有中文。
*
使用npm时如果命令行报错,需要注意看命令行的提示
**代码示例**
...
...
@@ -556,152 +584,152 @@ App.vue
```
## nvue 里可使用的 uni-app API
`nvue`
支持大部分 uni-app API ,下面只列举目前还不支持的 API 。
**地图**
|API|说明|
|:-|:-|
|uni.createMapContext()|创建并返回 map 上下文|
**视频**
|API|说明|
|:-|:-|
|uni.createVideoContext()|创建并返回 video 上下文|
**直播推流**
|API|说明|
|:-|:-|
|uni.createLivePusherContext()|创建并返回 livePusher 上下文|
**动画**
|API|说明|
|:-|:-|
|uni.createAnimation()|创建一个动画实例|
**滚动**
|API|说明|
|:-|:-|
|uni.pageScrollTo()|将页面滚动到目标位置|
**绘画**
|API|说明|
|:-|:-|
|uni.createCanvasContext()|创建 canvas 绘图上下文|
|uni.canvasToTempFilePath()|把当前画布指定区域的内容导出生成指定大小的图片,并返回文件路径|
|uni.canvasGetImageData()|返回一个数组,用来描述 canvas 区域隐含的像素数据|
|uni.canvasPutImageData()|将像素数据绘制到画布的方法|
**下拉刷新**
|API|说明|
|:-|:-|
|uni.onPullDownRefresh()|监听该页面用户下拉刷新事件|
|uni.startPullDownRefresh()|开始下拉刷新|
|uni.stopPullDownRefresh()|停止当前页面下拉刷新|
**节点信息**
|API|说明|
|:-|:-|
|uni.createSelectorQuery()|返回一个 SelectorQuery 对象实例|
**节点布局交互**
|API|说明|
|:-|:-|
|uni.createIntersectionObserver()|创建并返回一个 IntersectionObserver 对象实例|
#### nvue的新增API
为了解决nvue的weex编译模式不支持uni-app生命周期的问题,
`在nvue`
里新增了几个特殊的 API。如果是uni-app编译模式,无需使用这些API:
##### uni.onNavigationBarButtonTap(CALLBACK)@onNavigationBarButtonTap
监听原生标题栏按钮点击事件。
CALLBACK 参数说明:
|属性|类型|说明|
|---|---|---|
|index|Number|原生标题栏按钮数组的下标|
**代码示例**
```
javascript
export
default
{
created
()
{
uni
.
onNavigationBarButtonTap
((
e
)
=>
{
console
.
log
(
"
监听到原生标题栏按钮点击事件
"
);
console
.
log
(
e
);
})
}
}
```
##### uni.onNavigationBarSearchInputChanged(CALLBACK)
监听原生标题栏搜索输入框输入内容变化事件。
CALLBACK 参数说明:
|属性|类型|说明|
|---|---|---|
|text|String|搜索输入框输入内容|
**代码示例**
```
javascript
export
default
{
created
()
{
uni
.
onNavigationBarSearchInputChanged
((
e
)
=>
{
console
.
log
(
"
输入内容:
"
+
e
.
text
);
})
}
}
```
##### uni.onNavigationBarSearchInputConfirmed()
监听原生标题栏搜索输入框搜索事件,用户点击软键盘上的“搜索”按钮时触发。
**代码示例**
```
javascript
export
default
{
created
()
{
uni
.
onNavigationBarSearchInputConfirmed
(()
=>
{
console
.
log
(
"
用户点击软键盘搜索
"
);
})
}
}
```
##### uni.onNavigationBarSearchInputClicked()
监听原生标题栏搜索输入框点击事件。
**代码示例**
```
javascript
export
default
{
created
()
{
uni
.
onNavigationBarSearchInputClicked
(()
=>
{
console
.
log
(
"
点击输入框
"
);
})
}
}
```
`nvue`
支持大部分 uni-app API ,下面只列举目前还不支持的 API 。
**地图**
|API|说明|
|:-|:-|
|uni.createMapContext()|创建并返回 map 上下文|
**视频**
|API|说明|
|:-|:-|
|uni.createVideoContext()|创建并返回 video 上下文|
**直播推流**
|API|说明|
|:-|:-|
|uni.createLivePusherContext()|创建并返回 livePusher 上下文|
**动画**
|API|说明|
|:-|:-|
|uni.createAnimation()|创建一个动画实例|
**滚动**
|API|说明|
|:-|:-|
|uni.pageScrollTo()|将页面滚动到目标位置|
**绘画**
|API|说明|
|:-|:-|
|uni.createCanvasContext()|创建 canvas 绘图上下文|
|uni.canvasToTempFilePath()|把当前画布指定区域的内容导出生成指定大小的图片,并返回文件路径|
|uni.canvasGetImageData()|返回一个数组,用来描述 canvas 区域隐含的像素数据|
|uni.canvasPutImageData()|将像素数据绘制到画布的方法|
**下拉刷新**
|API|说明|
|:-|:-|
|uni.onPullDownRefresh()|监听该页面用户下拉刷新事件|
|uni.startPullDownRefresh()|开始下拉刷新|
|uni.stopPullDownRefresh()|停止当前页面下拉刷新|
**节点信息**
|API|说明|
|:-|:-|
|uni.createSelectorQuery()|返回一个 SelectorQuery 对象实例|
**节点布局交互**
|API|说明|
|:-|:-|
|uni.createIntersectionObserver()|创建并返回一个 IntersectionObserver 对象实例|
#### nvue的新增API
为了解决nvue的weex编译模式不支持uni-app生命周期的问题,
`在nvue`
里新增了几个特殊的 API。如果是uni-app编译模式,无需使用这些API:
##### uni.onNavigationBarButtonTap(CALLBACK)@onNavigationBarButtonTap
监听原生标题栏按钮点击事件。
CALLBACK 参数说明:
|属性|类型|说明|
|---|---|---|
|index|Number|原生标题栏按钮数组的下标|
**代码示例**
```
javascript
export
default
{
created
()
{
uni
.
onNavigationBarButtonTap
((
e
)
=>
{
console
.
log
(
"
监听到原生标题栏按钮点击事件
"
);
console
.
log
(
e
);
})
}
}
```
##### uni.onNavigationBarSearchInputChanged(CALLBACK)
监听原生标题栏搜索输入框输入内容变化事件。
CALLBACK 参数说明:
|属性|类型|说明|
|---|---|---|
|text|String|搜索输入框输入内容|
**代码示例**
```
javascript
export
default
{
created
()
{
uni
.
onNavigationBarSearchInputChanged
((
e
)
=>
{
console
.
log
(
"
输入内容:
"
+
e
.
text
);
})
}
}
```
##### uni.onNavigationBarSearchInputConfirmed()
监听原生标题栏搜索输入框搜索事件,用户点击软键盘上的“搜索”按钮时触发。
**代码示例**
```
javascript
export
default
{
created
()
{
uni
.
onNavigationBarSearchInputConfirmed
(()
=>
{
console
.
log
(
"
用户点击软键盘搜索
"
);
})
}
}
```
##### uni.onNavigationBarSearchInputClicked()
监听原生标题栏搜索输入框点击事件。
**代码示例**
```
javascript
export
default
{
created
()
{
uni
.
onNavigationBarSearchInputClicked
(()
=>
{
console
.
log
(
"
点击输入框
"
);
})
}
}
```
## nvue开发与vue开发的常见区别
基于原生引擎的渲染,虽然还是前端技术栈,但和web开发肯定是有区别的。
...
...
@@ -710,11 +738,11 @@ export default {
但仍然还有一些区别需要注意:
-
nvue 页面只能使用 flex 布局,不支持其他布局方式。
需要注意的是 weex 的 flex 默认为竖向排列,即
``flex-direction: column``
,这与 html 的 flex 默认为横向排列不同。在 nvue 编译为 uni-app模式时,纠正了这个问题,flex 方向默认改为横向排列。
-
nvue 页面只能使用 flex 布局,不支持其他布局方式。
-
weex 下,页面内容高过屏幕高度并不会自动滚动,它没有页面滚动的概念,只有区域滚动,要滚得内容需要套在
<scroller>
组件下。在 nvue 编译为 uni-app模式时,纠正了这个问题,页面内容过高会自动滚动。
-
weex 下,px是与屏幕宽度相关的动态单位,750px代表成屏幕宽度100%,它的静态单位是wx。在 nvue 编译为 uni-app模式时,纠正了这个问题,rpx是与屏幕宽度相关的动态单位,px是静态单位。
-
页面开发前,首先想清楚这个页面的纵向内容有什么,哪些是要滚动的,然后每个纵向内容的横轴排布有什么,按 flex 布局设计好界面。
-
文字内容,必须、只能在
<text>
组件下。不能在
<div>
的text里
写文字。
-
文字内容,必须、只能在
<text>
组件下。不能在
<div>
、
<view>
的text区域里直接
写文字。
-
支持的css有限,不过并不影响布局出你需要的界面,flex还是非常强大的。
[
详见
](
https://weex.apache.org/zh/docs/styles/common-styles.html#%E7%9B%92%E6%A8%A1%E5%9E%8B
)
-
class 进行绑定时只支持数组语法。
...
...
@@ -732,5 +760,4 @@ export default {
-
nvue 切换横竖屏时可能导致样式出现问题,建议有 nvue 的页面锁定手机方向。
-
不能在 style 中引入字体文件,nvue 中字体图标的使用参考:
[
weex 加载自定义字体
](
https://weex.apache.org/zh/docs/modules/dom.html#addrule
)
。
-
目前不支持在 nvue 页面使用 typescript/ts。
-
HBuilderX 1.9.8以前,nvue 不支持运行在Android三方模拟器上。HBuilderX 2.1以前,nvue不支持less等css预编译器。
-
nvue 页面
``titleNview``
设为
``false``
时,想要模拟状态栏,可以参考:
[
https://ask.dcloud.net.cn/article/35111
](
https://ask.dcloud.net.cn/article/35111
)
。
\ No newline at end of file
-
nvue 页面
``titleNview``
设为
``false``
时,想要模拟状态栏,可以参考:
[
https://ask.dcloud.net.cn/article/35111
](
https://ask.dcloud.net.cn/article/35111
)
。
yarn.lock
浏览文件 @
f150bfaa
...
...
@@ -3450,14 +3450,14 @@ eslint-scope@^4.0.0, eslint-scope@^4.0.3:
estraverse "^4.1.1"
eslint-utils@^1.3.0, eslint-utils@^1.3.1:
version "1.4.
0
"
resolved "https://registry.
npm.taobao.org/eslint-utils/download/eslint-utils-1.4.0.tgz#e2c3c8dba768425f897cf0f9e51fe2e241485d4c
"
version "1.4.
2
"
resolved "https://registry.
yarnpkg.com/eslint-utils/-/eslint-utils-1.4.2.tgz#166a5180ef6ab7eb462f162fd0e6f2463d7309ab
"
dependencies:
eslint-visitor-keys "^1.0.0"
eslint-visitor-keys@^1.0.0:
version "1.
0
.0"
resolved "https://registry.
npm.taobao.org/eslint-visitor-keys/download/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d
"
version "1.
1
.0"
resolved "https://registry.
yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2
"
eslint@^4.19.1:
version "4.19.1"
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录