提交 bebdee4a 编写于 作者: Q qiang

Merge branch 'master' into dev

# Conflicts:
#	docs/api/key.md
#	src/platforms/mp-toutiao/runtime/api/protocols.js
......@@ -24,7 +24,7 @@
`uni-app`支持通过`vue-cli`命令行、`HBuilderX`可视化界面两种方式快速创建项目:
- [vue-cli命令行方式](https://uniapp.dcloud.io/quickstart?id=_2-通过vue-cli命令行):不限IDE,适合对node熟悉的开发者
- [vue-cli命令行方式](https://uniapp.dcloud.io/quickstart?id=_2-通过vue-cli命令行):不限IDE,适合对node熟悉的开发者,扩展阅读:[在vscode中开发uni-app](https://ask.dcloud.net.cn/article/36286)
- [HBuilderX可视化界面](https://uniapp.dcloud.io/quickstart?id=_1-通过-hbuilderx-可视化界面):专用IDE,内置相关环境,开箱即用,开发效率更高。
## 项目案例
......@@ -37,6 +37,10 @@
`uni-app`计划支持的功能点,会在需求墙上进行展示,并允许开发者对需求进行投票,[前往投票](https://dev.dcloud.net.cn/wish/)
## 更新日志
`uni-app`一直保持极高的开发活跃度,详见[uni-app 更新日志](docs/release.md)
## 论坛
由于`uni-app`有几十万开发者,50多个QQ、微信群,官方已无法维护更多交流群。请开发者到官方论坛交流:[https://ask.dcloud.net.cn/explore/](https://ask.dcloud.net.cn/explore/) 。论坛提供了比issus更专业的工具服务。
......
......@@ -148,10 +148,10 @@
### 一套代码,运行到多个平台
```uni-app```实现了一套代码,同时运行到多个平台;如下图所示,一套代码,同时运行到iOS模拟器、Android模拟器、H5、微信开发者工具、支付宝小程序Studio、百度开发者工具、字节跳动开发者工具(底部7个终端选项卡代表7个终端模拟器):
```uni-app```实现了一套代码,同时运行到多个平台;如下图所示,一套代码,同时运行到iOS模拟器、Android模拟器、H5、微信开发者工具、支付宝小程序Studio、百度开发者工具、字节跳动开发者工具、QQ开发者工具(底部8个终端选项卡代表8个终端模拟器):
![](http://img.cdn.aliyun.dcloud.net.cn/guide/uniapp/dev1x7.png)
![](https://img-cdn-qiniu.dcloud.net.cn/uniapp/doc/dev1x8.jpg)
实际运行效果如下(点击图片可放大):
![](http://img.cdn.aliyun.dcloud.net.cn/guide/uniapp/run1x7.png)
![](https://img-cdn-qiniu.dcloud.net.cn/uniapp/doc/run1x8.jpg)
......@@ -47,7 +47,7 @@ uni.chooseImage({
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|x|√|√|√|x|
|√|x|√|√|√||
**OBJECT 参数说明:**
......@@ -127,7 +127,7 @@ uni.getSavedFileInfo({
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|x|√|√|√|x|
|√|x|√|√|√||
**OBJECT 参数说明:**
......@@ -162,7 +162,7 @@ uni.getSavedFileList({
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|x|√|√|√|x|
|√|x|√|√|√||
**OBJECT 参数说明:**
......
......@@ -8,7 +8,7 @@
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|QQ小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
|√|√|√|√|x|x|√|
|√|√|√|√|x||√|
#### uni.onKeyboardHeightChange(CALLBACK)
......
......@@ -130,7 +130,7 @@ uni.chooseImage({
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|√|√|√|√|x|
|√|√|√|√|√||
**OBJECT 参数说明**
......
......@@ -5,7 +5,7 @@
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|√|√|x|√|x|
|√|√|√|x|√||
**videoContext 对象的方法列表**
......
......@@ -5,7 +5,7 @@
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|√|√|x|√|√|
|√|√|√||√|√|
**OBJECT 参数说明**
......
......@@ -6,7 +6,7 @@
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|x|x|√|x|√|x|
|x|x|√|x|√||
**OBJECT参数说明**
......@@ -47,7 +47,7 @@ if (uni.getExtConfig) {
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|x|x|√|x|√|x|
|x|x|√|x|√||
**返回值(Object)**
......
......@@ -6,7 +6,7 @@
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|x|x|√|x|√|√|
|x|x|√||√|√|
|属性|类型|必填|说明|
|---|---|---|---|---|
......@@ -37,7 +37,7 @@ uni.openSetting({
|5+App|H5|微信小程序|支付宝小程序|百度小程序|
|:-:|:-:|:-:|:-:|:-:|
|x|x|√|x|√|
|x|x|√||√|
|属性|类型|必填|说明|
|---|---|---|---|---|
......
......@@ -10,7 +10,7 @@ App的更新不使用本API,另见文档:
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|x|x|√|x|√|√|
|x|x|√||√|√|
**updateManager 对象的方法列表:**
......
......@@ -66,7 +66,7 @@ var socketTask = uni.connectSocket({
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|√|√|√|√|x|
|√|√|√|√|√||
**CALLBACK 返回参数**
......@@ -93,7 +93,7 @@ uni.onSocketOpen(function (res) {
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|√|√|√|√|x|
|√|√|√|√|√||
**示例代码**
......@@ -116,7 +116,7 @@ uni.onSocketError(function (res) {
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|√|√|√|√|x|
|√|√|√|√|√||
**OBJECT 参数说明:**
......@@ -163,7 +163,7 @@ function sendSocketMessage(msg) {
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|√|√|√|√|x|
|√|√|√|√|√||
**CALLBACK 返回参数**
......@@ -190,7 +190,7 @@ uni.onSocketMessage(function (res) {
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|√|√|√|√|x|
|√|√|√|√|√||
**OBJECT 参数说明**
......@@ -209,7 +209,7 @@ uni.onSocketMessage(function (res) {
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|√|√|√|√|x|
|√|√|√|√|√||
```javascript
uni.connectSocket({
......
......@@ -6,9 +6,11 @@
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|HBuilderX 2.0.4+|√|√|√|√|
|√|HBuilderX 2.0.4+|√|√|√|√|
**注意: export 方法每次调用后会清掉之前的动画操作**
**注意:**
- export 方法每次调用后会清掉之前的动画操作
- nvue 暂不支持
**OBJECT参数说明:**
......
......@@ -7,7 +7,7 @@
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|HBuilderX 2.0.4+|√|x|√|x|
|√|HBuilderX 2.0.4+|√|√|√|√|
**options 的可选参数为:**
......
......@@ -35,7 +35,7 @@ uni-app已经有几十万开发者,创建了几十万个项目,是开发者
### 第三方开发者案例
<a href="https://media.kunming-railway.cn/" target="_blank" class="clear-style"><b>CSDN:</b></a> 专业 IT 技术社区,致力于为中国软件开发者提供知识传播、在线学习、职业发展等全生命周期服务。
<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">
<img src="https://img-cdn-qiniu.dcloud.net.cn/doc/csdn/csdn.png" width="200"/>
......@@ -43,7 +43,7 @@ uni-app已经有几十万开发者,创建了几十万个项目,是开发者
</a>
</div>
<a href="https://media.kunming-railway.cn/" target="_blank" class="clear-style"><b>开源中国:</b></a> 开源中国(oschina)百度小程序,提供最新的开源软件资讯。
<a href="https://www.oschina.net/" target="_blank" class="clear-style"><b>开源中国:</b></a> 开源中国(oschina)百度小程序,提供最新的开源软件资讯。
<div style="display:flex;justify-content: space-around;">
<a href="javascript:;" target="_blank" class="clear-style barcode-view">
<img src="https://img-cdn-qiniu.dcloud.net.cn/uniapp/doc/onchina.png" width="200"/>
......@@ -90,6 +90,14 @@ uni-app已经有几十万开发者,创建了几十万个项目,是开发者
<span style="margin-top:15px;">百度小程序码</span>
</a>
</div>
<a href="#" target="_blank" class="clear-style"><b>分秒律师:</b></a>律师咨询类应用。
<div style="display:flex;justify-content: space-around;">
<a href="https://www.cyb520.com/" target="_blank" class="clear-style barcode-view">
<img src="http://img.cdn.aliyun.dcloud.net.cn/guide/uniapp/case-toutiao-fenmiaolvshi.png" width="200"/>
<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;">
......@@ -392,6 +400,8 @@ uni-app已经有几十万开发者,创建了几十万个项目,是开发者
**摸鱼:**职场生活圈。[微信小程序](http://m3w.cn/moyu)
**千家找房:**专业的二手房、新房买卖租赁平台。[App、小程序、H5通用链接](http://m3w.cn/qjzf)
**超英预告:**超级英雄预告,腾讯课堂Next学院的uni-app课程示例,[H5](http://www.imovietrailer.com)、微信小程序搜索“NEXT超英预告”。
**垃圾分类帮帮团:** [微信小程序码地址](https://img-cdn-qiniu.dcloud.net.cn/uniapp/doc/ljfl.png)
......
通过在`package.json`文件中增加`uni-app`扩展节点,可实现自定义条件编译平台(如钉钉小程序、微信服务号等平台)。
package.json扩展配置用法:
package.json扩展配置用法(拷贝代码记得去掉注释!)
```json
{
......
......@@ -19,7 +19,7 @@
1. canvas 标签默认宽度 300px、高度 225px。
2. 同一页面中的 canvas-id 不可重复,如果使用一个已经出现过的 canvas-id,该 canvas 标签对应的画布将被隐藏并不再正常工作。
3. canvas在微信、百度小程序中为原生组件,层级高于前端组件,请勿内嵌在 scroll-view、swiper、picker-view、movable-view 中使用。解决 canvas 层级过高无法覆盖,[参考](/component/native-component)。canvas在App端vue页面不是原生组件,目前App端nvue还不支持canvas组件。
3. canvas在微信、百度小程序中为原生组件,层级高于前端组件,请勿内嵌在 scroll-view、swiper、picker-view、movable-view 中使用。解决 canvas 层级过高无法覆盖,[参考](/component/native-component)。canvas在App端vue页面不是原生组件,目前App端nvue还不支持canvas组件。
- App-nvue 暂不支持 canvas 组件
**示例:**
......@@ -70,4 +70,4 @@ export default {
canvas的常用用途有图表和图片处理,在uni-app插件市场有大量基于canvas的插件,可搜索 [图表](https://ext.dcloud.net.cn/search?q=图表)[头像裁剪](https://ext.dcloud.net.cn/search?q=头像裁剪)[海报](https://ext.dcloud.net.cn/search?q=海报)[二维码](https://ext.dcloud.net.cn/search?q=%E4%BA%8C%E7%BB%B4%E7%A0%81)
关于图表,H5端流行的echart报表因为涉及大量dom操作,无法跨端使用,而wx-chart在跨端和更新方面都不足,推荐使用[uChart组件](https://ext.dcloud.net.cn/plugin?id=271)如仍然坚持使用原版echart,可在web-view组件中内嵌html来使用
关于图表,H5端流行的echart报表因为涉及大量dom操作,无法跨端使用,而wx-chart在跨端和更新方面都不足,推荐使用[uChart组件](https://ext.dcloud.net.cn/plugin?id=271)但由于小程序和App在跟手操作和js操作帧动画方面性能不如web,如果这方面的需求,建议在web-view组件中使用html内嵌原版echart
#### cell
app端nvue专用组件。
`<cell>` Cell 必须以一级子组件的形式存在于 `list recycler waterfall` 中。
#### 子组件
Cell 支持添加任意类型的组件作为自己的子组件,但是请不要再内部添加滚动容器了。
#### 属性
- keep-scroll-position boolean. 控制当 Cell 被添加到列表中时,列表的滚动位置是否要保持不变。
- insert-animation string, cell 的插入动画。当前只支持 `none``default`
- delete-animation string, cell 的删除动画。当前只支持 `none``default`
- recycle boolean, 默认值 true。这个属性控制这个 Cell 的 view 和子 views 是否在列表滚动时进行回收,在 iOS 上通常必须指定为 true (因为默认为 true,所以一般不需要写这个属性),如果设置为 false,列表滚动时,页面会占用非常高的内存。Android上默认是true,设置为false可以防止Image和Text上数据重新绑定。
#### 样式
- 通用样式.
> TIP
> - 不要指定 `<cell>` 的 `flex` 值。Cell 的宽度是由它的父容器决定的,你也不需要指定它的高度。
> - Cell 的排版的位置是由父容器控制的,所以一般不要为其指定 `margin` 样式
#### 事件
- 通用事件.
......@@ -17,13 +17,13 @@
|cursor-spacing|Number|0|指定光标与键盘的距离,单位 px 。取 input 距离底部的距离和 cursor-spacing 指定的距离的最小值作为光标与键盘的距离|5+App、微信小程序、百度小程序、QQ小程序|
|focus|Boolean|false|获取焦点。在 H5 平台聚焦后软键盘是否跟随弹出,取决于当前浏览器本身的规范(策略)。||
|confirm-type|String|done|设置键盘右下角按钮的文字,仅在 type="text" 时生效。||
|confirm-hold|Boolean|false|点击键盘右下角按钮时是否保持键盘不收起|App、微信小程序、支付宝小程序、百度小程序、QQ小程序|
|confirm-hold|Boolean|false|点击键盘右下角按钮时是否保持键盘不收起|5+App、微信小程序、支付宝小程序、百度小程序、QQ小程序|
|cursor|Number||指定focus时的光标位置||
|selection-start|Number|-1|光标起始位置,自动聚集时有效,需与selection-end搭配使用||
|selection-end|Number|-1|光标结束位置,自动聚集时有效,需与selection-start搭配使用||
|adjust-position|Boolean|true|键盘弹起时,是否自动上推页面|5+App、微信小程序、百度小程序、QQ小程序|
|@input|EventHandle||当键盘输入时,触发input事件,event.detail = {value}|差异见下方 Tips|
|@focus|EventHandle||输入框聚焦时触发,event.detail = { value, height },height 为键盘高度|仅微信小程序、5+App、QQ小程序支持 height|
|@focus|EventHandle||输入框聚焦时触发,event.detail = { value, height },height 为键盘高度|仅微信小程序、5+App(HBuilderX 2.0+ [nvue uni-app模式](http://ask.dcloud.net.cn/article/36074)、QQ小程序支持 height|
|@blur|EventHandle||输入框失去焦点时触发,event.detail = {value: value}||
|@confirm|EventHandle||点击完成按钮时触发,event.detail = {value: value}|&nbsp;|
......
#### list
app端nvue专用组件。
`<list>` 组件是提供垂直列表功能的核心组件,拥有平滑的滚动和高效的内存管理,非常适合用于长列表的展示。最简单的使用方法是在 `<list>` 标签内使用一组由简单数组循环生成的 `<cell>` 标签填充。
```
<template>
<list>
<cell v-for="num in lists">
<text>{{num}}</text>
</cell>
</list>
</template>
<script>
export default {
data () {
return {
lists: ['A', 'B', 'C', 'D', 'E']
}
}
}
</script>
```
> **注意**
> - 不允许相同方向的 `<list>` 或者 `<scroll-view>` 互相嵌套,换句话说就是嵌套的 `<list>` / `<scroll-view>` 必须是不同的方向。
> - `<list>` 需要显式的设置其宽高,可使用 position: absolute; 定位或 width、height 设置其宽高值。
#### 子组件
`<list>` 的子组件只能包括以下四种组件或是 fix 定位的组件,其他形式的组件将不能被正确渲染。
- `<cell>`<br>
用于定义列表中的子列表项,类似于 HTML 中的 ul 之于 li。Weex 会对 `<cell>` 进行高效的内存回收以达到更好的性能。
- `<header>`<br>`<header>` 到达屏幕顶部时,吸附在屏幕顶部。
- `<refresh>`<br>用于给列表添加下拉刷新的功能。
- `<loading>`<br>
`<loading>` 用法与特性和 `<refresh>` 类似,用于给列表添加上拉加载更多的功能。
#### 属性
|属性名|说明|类型|默认值|
|:-|:-|:-|:-|
|show-scrollbar|控制是否出现滚动条|boolean|true|
|loadmoreoffset|触发 loadmore 事件所需要的垂直偏移距离(设备屏幕底部与 list 底部之间的距离),建议手动设置此值,设置大于0的值即可|number|0|
|offset-accuracy|控制 onscroll 事件触发的频率:表示两次onscroll事件之间列表至少滚动了10px。注意,将该值设置为较小的数值会提高滚动事件采样的精度,但同时也会降低页面的性能|number|10|
|pagingEnabled|是否按分页模式线上List,默认值false|boolean|true/false|
|scrollable|是否运行List关系|boolean|true/false|
`loadmoreoffset` 示意图:
#### 事件
- `loadmore` 事件
如果列表滚动到底部将会立即触发这个事件,你可以在这个事件的处理函数中加载下一页的列表项。 如果未触发,请检查是否设置了loadmoreoffset的值,建议此值设置大于0
- `scroll` 事件
列表发生滚动时将会触发该事件,事件的默认抽样率为 10px,即列表每滚动 10px 触发一次,可通过属性 offset-accuracy 设置抽样率。
事件中的 event 对象属性:
- `contentSize {Object}`:列表的内容尺寸
- `width {number}`:列表内容宽度
- `height {number}`:列表内容高度
- `contentOffset {Object}`:列表的偏移尺寸
- `x {number}`:x轴上的偏移量
- `y {number}`:y轴上的偏移量
- `isDragging {boolean}`: 用户是否正在拖动列表
......@@ -20,8 +20,8 @@
|show-confirm-bar|Boolean|true|是否显示键盘上方带有”完成“按钮那一栏|微信小程序、百度小程序、QQ小程序|
|selection-start|Number|-1|光标起始位置,自动聚集时有效,需与selection-end搭配使用|微信小程序、5+App、H5、百度小程序、头条小程序、QQ小程序|
|selection-end|Number|-1|光标结束位置,自动聚集时有效,需与selection-start搭配使用|微信小程序、5+App、H5、百度小程序、头条小程序、QQ小程序|
|adjust-position|Boolean|true|键盘弹起时,是否自动上推页面|5+App、微信小程序、百度小程序、QQ小程序|
|@focus|EventHandle||输入框聚焦时触发,event.detail = { value, height },height 为键盘高度|仅微信小程序、5+App、QQ小程序支持 height|
|adjust-position|Boolean|true|键盘弹起时,是否自动上推页面|5+App、微信小程序、百度小程序、QQ小程序|
|@focus|EventHandle||输入框聚焦时触发,event.detail = { value, height },height 为键盘高度|仅微信小程序、5+App(HBuilderX 2.0+ [nvue uni-app模式](http://ask.dcloud.net.cn/article/36074)、QQ小程序支持 height|
|@blur|EventHandle||输入框失去焦点时触发,event.detail = {value, cursor}||
|@linechange|EventHandle||输入框行数变化时调用,event.detail = {height: 0, heightRpx: 0, lineCount: 0}|头条小程序不支持|
|@input|EventHandle||当键盘输入时,触发 input 事件,event.detail = {value, cursor}, @input 处理函数的返回值并不会反映到 textarea 上||
......
#### waterfall
app端nvue专用组件。
`<waterfall>` 组件是提供瀑布流布局的核心组件。瀑布流,又称瀑布流式布局是比较流行的一种页面布局,视觉表现为参差不齐的多栏布局。随着页面滚动条向下滚动,这种布局还可以不断加载数据块并附加至当前尾部。
```
<template>
<waterfall column-count="2" column-width="auto">
<cell v-for="num in lists" >
<text>{{num}}</text>
</cell>
</waterfall>
</template>
<script>
export default {
data () {
return {
lists: ['A', 'B', 'C', 'D', 'E']
}
}
}
</script>
<style></style>
```
#### 子组件
`<list>` 组件一样, `<waterfall>` 组件的子组件只能包括以下四种组件或是 fix 定位的组件,其他形式的组件将不能被正确渲染。
- `<cell>`:用于定义列表中的子列表项,类似于 HTML 中的 ul 之于 li。Weex 会对 `<cell>` 进行高效的内存回收以达到更好的性能。
- `<header>`:当 `<header>` 到达屏幕顶部时,吸附在屏幕顶部。
- `<refresh>`:用于给列表添加下拉刷新的功能。
- `<loading>``<loading>` 用法与特性和 `<refresh>` 类似,用于给列表添加上拉加载更多的功能。
#### 属性
- show-scrollbar : `[可选]` 可选值为 true/ false,默认值为 true。控制是否出现滚动条。
- column-count: `[可选]`描述瀑布流的列数
- auto: 意味着列数是被其他属性所决定的(比如 column-width)
- `<integer>`: 最佳列数,column-width 和 column-count 都指定非0值, 则 column-count 代表最大列数。
- column-width : `[可选]`描述瀑布流每一列的列宽
- `auto`: 意味着列宽是被其他属性所决定的(比如 column-count)
- `<length>`: 最佳列宽,实际的列宽可能会更宽(需要填充剩余的空间), 或者更窄(如果剩余空间比列宽还要小)。 该值必须大于0
- column-gap: [可选]列与列的间隙. 如果指定了 `normal` ,则对应 32.
- left-gap: [可选]左边cell和列表的间隙. 如果未指定 ,则对应 `0`
- right-gap: [可选]右边cell和列表的间隙. 如果未指定,则对应 `0`
其他支持的属性参见 `<list>` 组件属性部分
#### 事件
支持所有通用事件:
- click:用于监听点击事件。(例如:一般绑定于子组件之上触发跳转)。
- longpress:用于监听长按事件(一般绑定于子组件之上例如:长按可删除)。
- appear:用于监听子组件出现事件(一般绑定于子组件之上例如:监听最后一个元素出现,加载新的数据)
- disappear:用于监听子组件滑出屏幕事件(一般绑定于子组件之上)
......@@ -10,8 +10,8 @@
**原生控件层级过高无法覆盖的解决方案:**[https://uniapp.dcloud.io/component/native-component](https://uniapp.dcloud.io/component/native-component)
**uni-app 各环节(HBuilderX、cli、自定义基座、本地sdk、云打包引擎)版本兼容性说明:**[https://ask.dcloud.net.cn/article/35845](https://ask.dcloud.net.cn/article/35845)
**uni-app 各环节(HBuilderX、cli、自定义基座、本地sdk、云打包引擎)版本兼容性说明:**[https://ask.dcloud.net.cn/article/35845](https://ask.dcloud.net.cn/article/35845)
**uni-app 中选择和上传非图像、视频文件:**[https://ask.dcloud.net.cn/article/35547](https://ask.dcloud.net.cn/article/35547)
**国际化/多语言/i18n方案:**[https://ask.dcloud.net.cn/article/35872](https://ask.dcloud.net.cn/article/35872)
......@@ -24,8 +24,8 @@
**uni-app App资源热更新:** [https://ask.dcloud.net.cn/article/35667](https://ask.dcloud.net.cn/article/35667)
**App初期启动的引导轮播:**因为是App专用,为了更好的性能,推荐使用nvue制作。也可以参考插件市场已经封装的插件[https://ext.dcloud.net.cn/plugin?id=192](https://ext.dcloud.net.cn/plugin?id=192)
**App初期启动的引导轮播:** 因为是App专用,为了更好的性能,推荐使用nvue制作。参考插件市场已经封装的插件[https://ext.dcloud.net.cn/plugin?id=676](https://ext.dcloud.net.cn/plugin?id=676)
**App全面屏底部安全区适配:**[https://ask.dcloud.net.cn/article/35564](https://ask.dcloud.net.cn/article/35564)
**App权限状态判断及引导:**[https://ext.dcloud.net.cn/plugin?id=594](https://ext.dcloud.net.cn/plugin?id=594)
......
......@@ -172,6 +172,10 @@ if(process.env.NODE_ENV === 'development'){
}
```
如果你需要自定义更多环境,比如测试环境:
- 假设只需要对单一平台配置,可以 package.json 中配置,在HBuilderX的运行和发行菜单里会多一个出来。[https://uniapp.dcloud.io/collocation/package](https://uniapp.dcloud.io/collocation/package)
- 如果是针对所有平台配置,可以在 vue-config.js 中配置。[https://uniapp.dcloud.io/collocation/vue-config](https://uniapp.dcloud.io/collocation/vue-config)
**快捷代码块**
HBuilderX 中敲入代码块 `uEnvDev`、`uEnvProd` 可以快速生成对应 `development`、`production` 的运行环境判定代码。
......@@ -238,10 +242,10 @@ nvue还不支持百分比单位。
App端,在 pages.json 里的 titleNView 或页面里写的 plus api 中涉及的单位,只支持 px。**注意此时不支持 rpx**
nvue中,uni-app 模式([nvue 不同编译模式介绍](https://ask.dcloud.net.cn/article/36074))可以使用 px 、rpx,表现与 vue 中一致。weex 模式目前遵循weex的单位,它的单位比较特殊:
nvue中,uni-app 模式([nvue 不同编译模式介绍](https://ask.dcloud.net.cn/article/36074))可以使用 px 、rpx,表现与 vue 中一致。weex 模式目前遵循weex的单位,它的单位比较特殊:
- px:,以750宽的屏幕为基准动态计算的长度单位,与 vue 页面中的 rpx 理念相同。(一定要注意 weex 模式的 px,和 vue 里的 px 逻辑不一样。)
- wx:与设备屏幕宽度无关的长度单位,与 vue 页面中的 px 理念相同
- wx:与设备屏幕宽度无关的长度单位,与 vue 页面中的 px 理念相同
下面对 `rpx` 详细说明:
......@@ -915,4 +919,4 @@ slide-view.vue
为了照顾开发者的已有学习积累,```uni-app```的组件和api设计,基本参考了微信小程序,学过微信小程序开发,了解```vue```,就能直接上手```uni-app```;感谢微信小程序团队!
```uni-app``` 在小程序端,曾引用[mpvue](http://mpvue.com/)[Megalo](https://megalojs.org/),感谢美团点评技术团队、网易考拉团队的贡献!
\ No newline at end of file
```uni-app``` 在小程序端,学习参考了[mpvue](http://mpvue.com/)[Megalo](https://megalojs.org/),感谢美团点评技术团队、网易考拉团队!
......@@ -56,14 +56,14 @@ H5没有原生组件概念问题,非H5端有原生组件并引发了原生组
title: 'Hello'
}
```
3. 在微信小程序端,```uni-app``` 将数据绑定功能委托给```Vue```,开发者需按```Vue 2.0```的写法实现数据绑定,不支持微信小程序的数据绑定写法,故如下写法不支持:
```javascript
<view id="item-{{id}}"></view>
```
需修改为:
```javascript
<view v-bind:id="'item-' + id "></view>
3. 在微信小程序端,```uni-app``` 将数据绑定功能委托给```Vue```,开发者需按```Vue 2.0```的写法实现数据绑定,不支持微信小程序的数据绑定写法,故如下写法不支持:
```javascript
<view id="item-{{id}}"></view>
```
需修改为:
```javascript
<view v-bind:id="'item-' + id "></view>
```
### 区别于传统 web 开发的注意
......@@ -87,9 +87,9 @@ H5没有原生组件概念问题,非H5端有原生组件并引发了原生组
- 每个要显示的页面,都要放到pages目录下,新建一个页面所在的目录,然后放同名目录的vue文件,比如project/pages/lista/lista.vue,并且在pages.json里配置。这与小程序的策略相同。
- 自定义组件,放到component目录
- 静态资源如图片,固定放到static目录下。这是webpack、mpvue的规则
5. 数据绑定方式的注意
- ```uni-app``` 基于```Vue 2.0```实现,开发者需注意Vue 1.0 -> 2.0 的使用差异,详见[从 Vue 1.x 迁移](https://cn.vuejs.org/v2/guide/migration.html)
-
5. 数据绑定方式的注意
- ```uni-app``` 基于```Vue 2.0```实现,开发者需注意Vue 1.0 -> 2.0 的使用差异,详见[从 Vue 1.x 迁移](https://cn.vuejs.org/v2/guide/migration.html)
-
6. 每个页面支持使用原生title,首页支持使用原生底部tab,这些是要在pages.json里配置,这些并不是vue页面的一部分。当然vue里的js api也可以动态修改原生title
6. 虽然使用vue,但在app和小程序里,不是spa而是mpa
7. 位置坐标系统一为国测局坐标系gcj02,这种坐标系可以被多端支持。老版5+的百度定位和百度地图使用的是百度私有坐标系bd09ll,这种坐标系需要转换。新版uni-app里的百度地图已经默认改为gcj02。高德地图不受影响,一直是gcj02
......@@ -98,14 +98,14 @@ H5没有原生组件概念问题,非H5端有原生组件并引发了原生组
* H5 发布到服务器注意:
1. 配置发行后的路径(发行在网站根目录可不配置),比如发行网站路径是 www.xxx.com/html5,在 ``manifest.json`` 文件内编辑 h5 节点,router 下增加 base 属性为 html5
<div>
<img src="https://img-cdn-qiniu.dcloud.net.cn/uploads/article/20181116/6ab94f68e109bb07e4f422c95a2c9015.png" width="500">
<div>
<img src="https://img-cdn-qiniu.dcloud.net.cn/uploads/article/20181116/6ab94f68e109bb07e4f422c95a2c9015.png" width="500">
</div>
2. 点击菜单 发行-> H5
3. 在当下项目下的 ``unpackage/dist/build/h5`` 目录找到出的资源,部署服务器(或者使用本地服务器预览)
* 引用第三方 js 的方式:
1. 通过 npm 引入(通过条件编译,只有是 h5 平台才 import 相应的库)
1. 通过 npm 引入(通过条件编译,只有是 h5 平台才 import 相应的库)
2.``manifest.json`` 文件编辑 h5 节点的 template 属性,填写 html 模版路径,在 html 模版里面可以使用 script 的方式引入三方的 js,如下示例是加了百度统计的 html 模板部分代码,模版全部代码可参考:[自定义模板](/collocation/manifest?id=h5-template)
```
...
......@@ -186,4 +186,4 @@ H5没有原生组件概念问题,非H5端有原生组件并引发了原生组
* ``map`` 组件在开发工具上预览效果不对,但是手机上是对的。
* ``getSystemInfo`` 获取到的 ``windowHeight`` 在模拟器中值不正确,真机预览是正确的。
* ``v-if````v-for`` 不可在同一标签下同时使用。
* 页面中引入自定义组件时,渲染的结果中外层会有一个 ``template`` 标签,这会导致部分选择器对应的样式匹配不上。
\ No newline at end of file
* 页面中引入自定义组件时,渲染的结果中外层会有一个 ``template`` 标签,这会导致部分选择器对应的样式匹配不上。
......@@ -46,6 +46,7 @@
* 减少 scroll-view 组件的 scroll 事件监听,当监听 scroll-view 的滚动事件时,视图层会频繁的向逻辑层发送数据;
* 监听 scroll-view 组件的滚动事件时,不要实时的改变 scroll-top/scroll-left 属性,因为监听滚动时,视图层向逻辑层通讯,改变 scroll-top/scroll-left 时,逻辑层又向视图层通讯,这样就可能造成通讯卡顿。
* 注意 onPageScroll 的使用,onPageScroll 进行监听时,视图层会频繁的向逻辑层发送数据;
* 多使用css动画,而不是通过js的定时器操作界面做动画
**优化页面切换动画**
......
此差异已折叠。
......@@ -65,26 +65,28 @@ const todos = [
'sendTemplateMessage',
'setEnableDebug',
'onWindowResize',
'offWindowResize'
'offWindowResize',
'compressImage',
'createOffscreenCanvas'
]
// 存在兼容性的 API 列表
// 头条小程序不支持canIUses
const canIUses = [
// 'createIntersectionObserver',
// 'getSavedFileList',
// 'removeSavedFile',
// 'hideKeyboard',
// 'getImageInfo',
// 'createVideoContext',
// 'onSocketOpen',
// 'onSocketError',
// 'sendSocketMessage',
// 'onSocketMessage',
// 'closeSocket',
// 'onSocketClose',
// 'getExtConfig',
// 'getExtConfigSync',
// 存在兼容性的 API 列表
// 头条小程序不支持canIUses
const canIUses = [
// 'createIntersectionObserver',
// 'getSavedFileList',
// 'removeSavedFile',
// 'hideKeyboard',
// 'getImageInfo',
// 'createVideoContext',
// 'onSocketOpen',
// 'onSocketError',
// 'sendSocketMessage',
// 'onSocketMessage',
// 'closeSocket',
// 'onSocketClose',
// 'getExtConfig',
// 'getExtConfigSync',
]
// 需要做转换的 API 列表
......@@ -150,15 +152,15 @@ const protocols = {
timeout: false
}
},
requestPayment: {
args: {
orderInfo: 'data'
}
},
getFileInfo: {
args: {
digestAlgorithm: false
}
requestPayment: {
args: {
orderInfo: 'data'
}
},
getFileInfo: {
args: {
digestAlgorithm: false
}
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册