Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
uni-app
提交
aa42730c
U
uni-app
项目概览
DCloud
/
uni-app
4 个月 前同步成功
通知
731
Star
38707
Fork
3642
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
7
列表
看板
标记
里程碑
合并请求
1
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
uni-app
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
7
Issue
7
列表
看板
标记
里程碑
合并请求
1
合并请求
1
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
aa42730c
编写于
4月 17, 2020
作者:
雪洛
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Update matter.md
上级
3a028bc5
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
17 addition
and
12 deletion
+17
-12
docs/matter.md
docs/matter.md
+17
-12
未找到文件。
docs/matter.md
浏览文件 @
aa42730c
...
...
@@ -55,7 +55,7 @@ vue页面在App端的渲染引擎默认是系统webview(不是手机自带浏
解决这类问题:
1.
放弃老款手机支持
2.
不用使用太新的css语法,可以在caniuse查询
3.
从 uni-app 2.5.3 起,Android端支持引入腾讯x5浏览器内核,可以抹平低端Android的浏览器兼容性问题,
[
详见x5使用指南
](
https://ask.dcloud.net.cn/article/36806
)
3.
从 uni-app 2.5.3 起,Android端支持引入腾讯x5浏览器内核,可以抹平低端Android的浏览器兼容性问题,
[
详见x5使用指南
](
https://ask.dcloud.net.cn/article/36806
)
### 小程序或App正常,但H5异常的可能性
1.
在 uni-app 2.4.7 以前,H5端不支持微信小程序自定义组件,即wxcomponets下的组件,此时可能产生兼容问题。从 2.4.7 起,H5也支持微信自定义组件,不再存在这这方面兼容问题。
...
...
@@ -65,10 +65,15 @@ vue页面在App端的渲染引擎默认是系统webview(不是手机自带浏
### App正常,小程序、H5异常的可能性
1.
代码中使用了App端特有的plus、Native.js、subNVue、原生插件等功能
### App(v2)与App(v3)差异说明
1.
App(v2)默认template中使用了未定义或未初始化的数据,运行不会报错,且不影响后续节点渲染。App(v3)运行时,会直接告警,并报错(标准的vue渲染逻辑,同H5),且影响后续节点数据的渲染,错误信息通常显示为
`undefined is not an object, evaluating(xxx.xxx.xxx)`
2.
App(v2)默认隔离组件样式(组件间样式不会互相影响),App(v3)版本默认不隔离。目前发现开发者v2升级v3反馈的样式问题大多由此导致,v3版本将于
`2.6.14-alpha`
进行调整默认隔离组件间样式。
### 使用 Vue.js 的注意
1.
`
``uni-app```
基于
```Vue 2.0``
`
实现,开发者需注意Vue 1.0 -> 2.0 的使用差异,详见
[
从 Vue 1.x 迁移
](
https://cn.vuejs.org/v2/guide/migration.html
)
1.
`
uni-app`
基于
`Vue 2.0
`
实现,开发者需注意Vue 1.0 -> 2.0 的使用差异,详见
[
从 Vue 1.x 迁移
](
https://cn.vuejs.org/v2/guide/migration.html
)
2.
data 属性必须声明为返回一个初始数据对象的函数;否则页面关闭时,数据不会自动销毁,再次打开该页面时,会显示上次数据
```
javascript
...
...
@@ -83,7 +88,7 @@ vue页面在App端的渲染引擎默认是系统webview(不是手机自带浏
title
:
'
Hello
'
}
```
3.
在微信小程序端,
`
``uni-app```
将数据绑定功能委托给
```Vue```
,开发者需按
```Vue 2.0``
`
的写法实现数据绑定,不支持微信小程序的数据绑定写法,故如下写法不支持:
3.
在微信小程序端,
`
uni-app`
将数据绑定功能委托给
`Vue`
,开发者需按
`Vue 2.0
`
的写法实现数据绑定,不支持微信小程序的数据绑定写法,故如下写法不支持:
```
javascript
<
view
id
=
"
item-{{id}}
"
><
/view>
...
...
@@ -125,7 +130,7 @@ vue页面在App端的渲染引擎默认是系统webview(不是手机自带浏
### H5 开发注意
*
H5 发布到服务器注意:
1.
配置发行后的路径(发行在网站根目录可不配置),比如发行网站路径是 www.xxx.com/html5,在
`
`manifest.json`
`
文件内编辑 h5 节点,router 下增加 base 属性为 html5
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>
...
...
@@ -134,7 +139,7 @@ vue页面在App端的渲染引擎默认是系统webview(不是手机自带浏
*
引用第三方 js 的方式:
1.
通过 npm 引入(通过条件编译,只有是 h5 平台才 import 相应的库)
2.
在
`
`manifest.json`
`
文件编辑 h5 节点的 template 属性,填写 html 模版路径,在 html 模版里面可以使用 script 的方式引入三方的 js,如下示例是加了百度统计的 html 模板部分代码,模版全部代码可参考:
[
自定义模板
](
/collocation/manifest?id=h5-template
)
2.
在
`
manifest.json
`
文件编辑 h5 节点的 template 属性,填写 html 模版路径,在 html 模版里面可以使用 script 的方式引入三方的 js,如下示例是加了百度统计的 html 模板部分代码,模版全部代码可参考:
[
自定义模板
](
/collocation/manifest?id=h5-template
)
```
...
<body>
...
...
@@ -156,27 +161,27 @@ vue页面在App端的渲染引擎默认是系统webview(不是手机自带浏
...
```
*
H5 版
`
`uni-app``
全支持
``vue`
`
语法,所以可能造成部分写法在 H5 端生效,在小程序或 App 端不生效。
*
H5 版
`
uni-app`
全支持
`vue
`
语法,所以可能造成部分写法在 H5 端生效,在小程序或 App 端不生效。
*
H5 校验了更严格的
``vue``
语法,有些写法不规范会报警,比如:
`
`data``
后面写对象会报警,必须写
``function``
;不能修改
``props``
的值;组件最外层
``template`
`
节点下不允许包含多个节点等。
*
H5 校验了更严格的
``vue``
语法,有些写法不规范会报警,比如:
`
data`
后面写对象会报警,必须写
`function`
;不能修改
`props`
的值;组件最外层
`template
`
节点下不允许包含多个节点等。
*
编译为 H5 版后生成的是单页应用(SPA)。
*
如果遇到跨域造成js无法联网,注意网络请求(request、uploadFile、downloadFile等)在浏览器存在跨域限制,解决方案有详见:
[
https://ask.dcloud.net.cn/article/35267
](
https://ask.dcloud.net.cn/article/35267
)
*
APP 和小程序的导航栏和
`
`tabbar``
均是原生控件,元素区域坐标是不包含原生导航栏和
``tabbar``
的;而 H5 里导航栏和
``tabbar``
是 div 模拟实现的,所以元素坐标会包含导航栏和tabbar的高度。为了优雅的解决多端高度定位问题,
``uni-app``
新增了2个css变量:
``--window-top``
和
``--window-bottom``
,这代表了页面的内容区域距离顶部和底部的距离。举个实例,如果你想在原生
``tabbar``
上方悬浮一个菜单,之前写
``bottom:0``
。这样的写法编译到 h5 后,这个菜单会和
``tabbar``
重叠,位于屏幕底部。而改为使用
``bottom:var(--window-bottom)``
,则不管在 app 下还是在h5下,这个菜单都是悬浮在
``tabbar`
`
上浮的。这就避免了写条件编译代码。当然仍然也可以使用 H5 的条件编译处理界面的不同。
*
APP 和小程序的导航栏和
`
tabbar`
均是原生控件,元素区域坐标是不包含原生导航栏和
`tabbar`
的;而 H5 里导航栏和
`tabbar`
是 div 模拟实现的,所以元素坐标会包含导航栏和tabbar的高度。为了优雅的解决多端高度定位问题,
`uni-app`
新增了2个css变量:
`--window-top`
和
`--window-bottom`
,这代表了页面的内容区域距离顶部和底部的距离。举个实例,如果你想在原生
`tabbar`
上方悬浮一个菜单,之前写
`bottom:0`
。这样的写法编译到 h5 后,这个菜单会和
`tabbar`
重叠,位于屏幕底部。而改为使用
`bottom:var(--window-bottom)`
,则不管在 app 下还是在h5下,这个菜单都是悬浮在
`tabbar
`
上浮的。这就避免了写条件编译代码。当然仍然也可以使用 H5 的条件编译处理界面的不同。
*
CSS 內使用
`
`vh``
单位的时候注意
``100vh``
包含导航栏,使用时需要减去导航栏和
``tabBar`
`
高度,部分浏览器还包含浏览器操作栏高度,使用时请注意。
*
CSS 內使用
`
vh`
单位的时候注意
`100vh`
包含导航栏,使用时需要减去导航栏和
`tabBar
`
高度,部分浏览器还包含浏览器操作栏高度,使用时请注意。
*
正常支持
`
`rpx``
,
``px``
是真实物理像素。暂不支持通过设
``manifest.json``
的
``"transformPx" : true`
`
,把 px 当动态单位使用。
*
正常支持
`
rpx`
,
`px`
是真实物理像素。暂不支持通过设
`manifest.json`
的
`"transformPx" : true
`
,把 px 当动态单位使用。
*
使用罗盘、地理位置、加速计等相关接口需要使用 https 协议,本地预览(localhost)可以使用 http 协议。
*
PC 端 Chrome 浏览器模拟器设备测试的时候,获取位置 API 需要连接谷歌服务器。
*
组件内(页面除外)不支持
`
`onLoad``
、
``onShow`
`
等页面生命周期。
*
组件内(页面除外)不支持
`
onLoad`
、
`onShow
`
等页面生命周期。
*
为避免和内置组件冲突,自定义组件请加上前缀(但不能是 u 和 uni)。比如可使用的自定义组件名称:
`
`my-view``
、
``m-input``
、
``we-icon``
,例如不可使用的自定义组件名称:
``u-view``
、
``uni-input`
`
,如果已有项目使用了可能造成冲突的名称,请修改名称,另外微信小程序下自定义组件名称不能以 wx 开头。
*
为避免和内置组件冲突,自定义组件请加上前缀(但不能是 u 和 uni)。比如可使用的自定义组件名称:
`
my-view`
、
`m-input`
、
`we-icon`
,例如不可使用的自定义组件名称:
`u-view`
、
`uni-input
`
,如果已有项目使用了可能造成冲突的名称,请修改名称,另外微信小程序下自定义组件名称不能以 wx 开头。
### 小程序开发注意@mp
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录