zoukankan      html  css  js  c++  java
  • 移动端开发基础【13】uni-app跨端开发注意事项

    uni-app跨端开发注意事项

    1、H5正常但App异常的可能性

    (1) css异常:

    (2) 不支持的选择器非H5端不支持 * 选择器;body的元素选择器请改为page,同样,div和ul和li等改为view、span和font改为text、a改为navigator、img改为image等等。

    (3) webview浏览器兼容性。vue页面在App端是被系统的webview渲染的(不是手机自带浏览器,是rom的webview),在较老的手机上,比如Android4.4、5.0或iOS8,很多css是不支持的,所以不要使用太新的css,会导致界面异常。

    注意这不意味着不能使用flex,Android4.4也支持flex,只是不要使用太新的css。

    可以找Android4.4手机或使用pc模拟器实际测试下,大多数国产Android模拟器都是4.4或5.0。

    小程序不存在此情况。所以如果你的H5和小程序界面正常,而App界面异常,大多是因为css兼容性。解决这类问题,可以在caniuse查询,也可以使用一个较低版本的chrome浏览器在H5端测试。

    Android4.4对应的webview是chrome37,如找不到老版chrome,也可以下载老版HBuilder(在HBuilderX下载页面底部有“上一代HBuilder下载”),在老HBuilder的右上角边改边看模式里是chrome37内核,可以把uni-app的H5版运行起来,将url粘贴到边改边看的浏览器中,点右键可以审查元素,排查不支持的css。

    (4) 原生组件层级问题。H5没有原生组件概念问题,非H5端有原生组件并引发了原生组件层级高于前端组件的概念,要遮挡video、map等原生组件,可以使用cover-view组件。

    (5) 使用了非H5端不支持的API,比如document、xmlhttp、cookie、window、location、navigator、localstorage、websql、indexdb、webgl等对象。如果你的代码没有直接使用这些,那很可能是引入的三方库使用了这些。如果是后者,去插件市场搜索替代方案。要知道非H5端的js是运行在一个独立的js core或v8下,并不是运行在浏览器里。

    (6) 使用了非H5端不支持的vue语法,比如v-html指令、受小程序自定义组件限制的写法.

    (7) 引用组件时,不要在引用组件的地方,也就是在组件属性上直接写 style="xx",要在组件内部写样式。

    (8) 不能使用url(//alicdn.net)等路径,如果要使用,改为url(https://alicdn.net),因为在App端//是file协议。

    (9)很多人在H5端联网时使用本地测试服务地址(localhost或127.0.0.1),这样的联网地址在手机端肯定是无法访问的,它会提示你使用手机可以访问的IP进行联网。

    (10) 组件和页面样式相互影响。非H5端默认并没有启用 scoped,如果需要隔离组件样式可以在 style 标签增加 scoped 属性,H5端为了隔离页面间的样式默认启用了 scoped。

    3、H5正常但小程序异常的可能性

    (1) 使用了非H5端不支持的API,比如document、window、navigator、cookie,或者引入的三方库使用了这些不支持的API,此时要更换适合跨端的三方库。

    (2) 使用了非H5端不支持的vue语法,比如v-html指令,在h5和app-vue(v3编译模式)均支持,但小程序不支持。

    (3) 小程序要求连接的网址都要配白名单

    2、小程序正常但App异常的可能性

    vue页面在App端的渲染引擎默认是系统webview,但要注意的是,它不是手机自带的浏览器,而是rom的webview。在较老的手机上,比如Android4.4、5.0或iOS8,一些新出的css语法是不支持的。但这并不是说不能使用flex,因为Android4.4也支持flex,只是不要使用太新的css。可以找Android4.4手机或使用pc模拟器实际测试下,大多数国产Android模拟器都是4.4或5.0。

    小程序不存在浏览器兼容问题,它内置了几十M自己的定制webview。所以如果你的H5和小程序界面正常,而App界面异常,大多是因为css兼容性。

    我们可以使用以下几种方法来解决这类CSS兼容性的问题:

    (1) 放弃老款手机支持

    (2) 不用使用太新的css语法,可以在caniuse查询

    (3)从 uni-app 2.5.3 起,Android端支持引入腾讯x5浏览器内核,可以抹平低端Android的浏览器兼容性问题。

    4、小程序或App正常,但H5异常的可能性

    (1)在 uni-app 2.4.7 以前,H5端不支持微信小程序自定义组件,即wxcomponets下的组件,它可能产生兼容问题。但是,从 2.4.7 起,H5也支持微信自定义组件,不再存在这方面兼容问题。

    (2)App端使用了App特有的API和功能,比如plus、Native.js、subNVue、原生插件等

    (4)使用了小程序专用的功能,比如微信卡卷、小程序插件、微信小程序云开发。对于云开发,建议使用可跨端的uniCloud。

    5、App正常,小程序、H5异常的可能性

    使用了App端特有的plus、Native.js、原生插件等功能。

    官网:http://www.lenbor.com
  • 相关阅读:
    第七次作业
    随堂讨论8
    第六次作业
    随堂讨论-5
    曹宇轩-第五次作业
    随堂讨论3-刘昕昕,曹宇轩
    曹宇轩-第四次作业
    Alpha阶段项目复审
    团队作业4 -项目冲刺
    第六篇 Scrum冲刺博客
  • 原文地址:https://www.cnblogs.com/lenbor/p/13190422.html
Copyright © 2011-2022 走看看