uniApp开发注意要点提炼-xyphf

这篇具有很好参考价值的文章主要介绍了uniApp开发注意要点提炼-xyphf。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

我们在使用uniApp开发的时候,很多朋友由于对多端兼容性的不了解,结果在多端编译的时候经常出这样或者那样的问题,而不断的说uniApp这坑那坑的,下面我基于自身经验和官网说明提炼一些常见的注意要点。

因为很多公司时常初衷是开发一个微信小程序,而程序员开发时只专注于微信小程序,而开发差不多了,领导一拍脑袋,又要一个APP或者抖音小程序等,这时候领导可能也听说了uniApp支持多端打包的,但是这个时候你构建其他端时就会大面积报异常,这个时候难免要被PUA考虑问题不够全面,为了防患于未然,我们一开始开发任意一端时,就要尽可能的考虑所有端的兼容性支持问题。

1、最好只用class选择器。H5不支持 *选择器, 百度小程序不支持属性选择器。

2、body的元素选择器请改为page

3、div、ul、li改为view,span、font改为text,a改为navigator、img改为image,css不能引入本地图片,如果非要引入可以试试写行内样式

<view class="content" 
    style="background-image: url('../../static/index-top-bg.png');">
</view>

4、组件和页面样式相互影响,H5端默认开启了 scoped,其他端并未开启,并且百度小程序不支持scoped建议开发时全部使用class父子级管理来处理

5、uniApp推荐并支持使用flex布局【快应用只支持flex布局】,但是不支持太新的CSS属性;vue页面在App端,默认是被系统rom的webview渲染的,Android4.4对应的webview是chrome37,如果你知道使用的CSS属性是否被支持,可以使用使用CSS支持查询器查询一下。

关于手机webview内核、默认浏览器、各家小程序的渲染层浏览器的区别和兼容性

6、video、map等原生组件无法遮挡,非H5端有原生组件并引发了原生组件层级高于前端组件的问题,比如要遮挡video、map等原生组件,请使用cover-view组件;但是请注意360旗下轻应用和字节系下抖音、飞书小程序是不支持的cover-view组件的;cover-view组件不要嵌套,支付宝小程序不支持。

7、不要使用浏览器专用js对象,比如document、xmlhttp、cookie、window、location、navigator、localstorage、websql、indexdb、webgl等,因为非H5不支持。如果你的代码没有直接使用这些,那很可能是引入的三方库使用了这些,建议使用uniApp官方提供的具有相同功能的API或寻找其他替代方案。

8、蒙版弹层不能覆盖原生底部tab,官网建议动态隐藏tabbar但是导致的闪烁问题客户不满意,为了规避此问题,建议使用自定义tab,如果使用原生底部tab,这些是要在pages.json里配置的。

CSS 內使用 vh 单位的时候注意 100vh 包含导航栏,使用时需要减去导航栏和 tabBar 高度,部分浏览器还包含浏览器操作栏高度,使用时请注意。

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 的条件编译处理界面的不同。——官方说了一大堆,所以本人建议还是别用原生tabbar好了

9、位置坐标系统一为国测局坐标系gcj02

10、使用通过 npm 引入第三方js,只有是 h5 平台才 import 相应的库;

11、data 后面必须写 function;不能修改 props 的值;组件最外层 template 节点下不允许包含多个节点;

12、如果无法发送请求,请核验微信公众平台小程序开发者设置是否有设置请求域名;开发工具可以请求但真机无法请求请核验域名是否是https协议[真机是必须https];如果是web-view页面加载失败请查看微信公众平台小程序开发者设置业务域名是否有配置,页面的服务器根目录是否有添加微信小程序web-view的鉴权文件;如果遇到跨域造成js无法联网,注意网络请求(request、uploadFile、downloadFile等)在浏览器存在跨域限制

13、使用罗盘、地理位置、加速计等相关接口需要使用 https 协议,本地预览(localhost)可以使用 http 协议。

14、不要在组件内使用 onLoad、onShow 等页面生命周期。

15、自定义组件请加上前缀(但不能是 u- 和 uni-)避免与官方组件冲突。

16、使用flex布局时,直接给自定义组件的父元素设置为display:flex不能影响到自定义组件内部的根节点,需要设置当前自定义组件为display:flex才可以。

17、在自定义组件内部设置根元素高度为100%,不能撑满自定义组件父元素。需要同时设置当前自定义组件高度为100%才可以

18、[uniapp vendor.js 过大的处理方式]

        (1)HBuilderX创建的项目勾选运行-->运行到小程序模拟器-->运行时是否压缩代码

        (2) cli创建的项目可以在package.json中添加参数--minimize,示例:"dev:mp-weixin": "cross-env NODE_ENV=development UNI_PLATFORM=mp-weixin vue-cli-service uni-build --watch --minimize"

        (3)使用分包优化

19、showLoading 是不透传的,也就是说 loading 显示的时候无法点击页面内容。

20、文件名或文件夹名中不允许出现 @ 符号

21、网络请求返回的数据会严格按照 dataType 进行处理,如果不符合规范则会抛出错误,而不是按照原格式返回。

22、canvas 组件的标识是 id,而不是 canvas-id。目前还未进行处理,所以需要主动添加 id 属性。

23、使用伪元素做边框时,高度值不能用 1rpx,需要直接用 1px。

24、支付宝小程序不支持 ECharts;

25、v-if 和 v-for 不可在同一标签下同时使用;

26、页面蒙版弹出下面页面仍然可以滚动,请在蒙版的外层标签添加@touchmove.stop.prevent="() => {}"

<view class="appreciate" @touchmove.stop.prevent="() => {}">
</view>

27、1像素问题处理文章来源地址https://www.toymoban.com/news/detail-735412.html

                .bottom-btn {
					position: relative;
					height: 80rpx;
					display: flex;
				}
				.bottom-btn:after {
					content: " ";
					position: absolute;
					left: 0;
					bottom: 0;
					right: 0;
					height: 1px;
					color: #e0e0e0;
					transform-origin: 0 100%;
					transform: scaleY(0.5);
					z-index: 1;
				}
				.bottom-btn:before {
					content: " ";
					position: absolute;
					left: 0;
					top: 0;
					right: 0;
					height: 1px;
					border-bottom: 1px solid #F5F5F5;
					color: #e0e0e0;
					transform-origin: 0 0;
					transform: scaleY(0.5);
					z-index: 1;
				}

到了这里,关于uniApp开发注意要点提炼-xyphf的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 大前端面试注意要点

    前端面试:从IT专家角度全面解析 在数字时代,前端开发工程师的角色变得越来越重要。随着网站和应用程序的复杂性和交互性越来越高,对具有专业技能的前端开发人员的需求也在不断增长。对于正在寻找前端开发职位的开发者,或者正在寻找优秀人才的公司,本文将提供

    2024年02月09日
    浏览(34)
  • 5分钟开发一个AI论文抓取和ChatGPT提炼应用

    点击“即刻开始” -选择模板 python -修改标题 “AIPaper”,项目标识“AIPaper”,点击“创建项目” 在编程区域右侧AI区域,输入框输入以下内容: 打开左侧main.py文件,将AI区生成的代码插入到文件中。 打开左侧文件”requirements.txt“,输入下面的两行,用来加载安装arxiv的ap

    2024年02月16日
    浏览(44)
  • 【每日随笔】注意力陷阱 ( 技术无关、不要点进来看 | 注意力控制 | 注意力收割 )

    每个人拥有的最宝贵的财富是 注意力 , 人一天能集中注意力 的时间 也就 3 ~ 5 个小时 , 如果不合理的使用这段时间的注意力 , 而是将注意力挥霍在了其它地方 ; 李笑来 老师 在通往财富自由之路 专栏中 总结了 3 种注意力消耗陷阱 : 莫名其妙地凑热闹 : 大街上围观 吵架 , 打架

    2023年04月10日
    浏览(42)
  • 知识库网站如何搭建?需要注意这五个要点!

    正因为知识库提供结构化知识库来记载信息和知识,便于团队沉淀经验、共享资源,形成完整的知识体系并持续进化​,使得它成为当前企业发展新宠。 构建自己/团队的知识库是一个良好的习惯,可以提高工作和学习效率,以下是一些高效构建自己的知识库的方法,希望能

    2024年02月09日
    浏览(45)
  • 西门子PLC硬件编程需要注意的几个要点

    往往一个好的编程程序习惯可以让事情事半功倍。用正确的逻辑思维和方法去写程序,一方面可以减少出错,另一方面就是方便检查程序里出现的bug。下面就为大家盘点一下,西门子PLC的一些硬件编程的好习惯。 1、关于选型 项目开始需要统计出IO点表,一般在设计初期需要

    2024年02月15日
    浏览(44)
  • Marin说PCB之 MIPI信号layout设计注意要点

    前言:MIPI(移动行业处理器接口)是Mobile Industry Processor Interface的缩写 ,MIPI总线在目前的移动设备手机/平板的LCD或者camera应用的十分广泛,作为一名合格的PCB攻城狮,在设计MIPI这类高速信号时就不能仅仅是连通好走线就行了,现在已经是5G时代了,PCB设计们的设计理念也是

    2024年02月12日
    浏览(32)
  • 江苏版M401A原版 刷机ARMBIAN注意要点

    刷机过程主要参考了 https://blog.csdn.net/u012132482/article/details/128375679 这篇文章 也是用这篇文章里的固件。 刷机时注意要点 少走弯路 双头usb的制作。 找2根淘汰的usb数据线 两头留0.5米 白色(D-)对 白色(D-) 绿色 (D+) 对 绿色 (D+) 黑色 (GND)对 黑色(GND) 这3根线一一对应接好

    2023年04月16日
    浏览(48)
  • 岩土工程安全监测隧道中使用振弦采集仪注意要点?

    岩土工程安全监测隧道中使用振弦采集仪注意要点? 岩土工程的安全监测是非常重要的,它可以帮助工程师及时发现可能存在的问题,并及时解决,保障施工进度以及施工质量,保障工程的安全运行。其中,振弦采集仪是岩土工程安全监测中比较常用的一种仪器,其灵敏的动

    2024年02月12日
    浏览(50)
  • uniapp开发安卓App注意事项(HTML5+规范 plus调用安卓原生能力:广播,扫描,相机等)

    使用安卓调试基座进行调试大大降低了uniapp开发安卓app的门槛 安卓开发经常需要调用到安卓原生的api,例如广播,扫码,相机等等,uniapp内置了App端的HTML5+规范,可以使用js直接调用丰富的原生能力。例如在安卓中调用原生的激光扫描能力: 该plus对象便是uniapp内置的HTML5+规

    2024年03月19日
    浏览(52)
  • vue或uniapp使用pdf.js预览

    一、先下载稳定版的pdf.js,可以去官网下载  官网下载地址  或  pdf.js包下载(已配置好,无需修改) 二、下载好的pdf.js文件放在public下静态文件里, uniapp是放在 static下静态文件里 三、使用方式    1. vue项目 注意路径  :src=\\\"`static/pdfjs-1.9/web/viewer.html?file=你的pdf路径  2.

    2024年02月13日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包