您的当前位置:首页>全部文章>文章详情

【UniApp】uniapp兼容微信小程序和支付宝小程序遇到的坑

CrazyPanda发表于:2023-12-26 23:47:36浏览:385次TAG:

1、支付宝不支持v-show

改为v-if

2、v-html

App端和H5端支持 v-html ,微信小程序会被转为 rich-text,其他端不支持 v-html。

解决方法:去插件市场找一个支持跨端的富文本组件。

3、导航栏处有背景色延伸至导航栏外

兼容微信小程序和支付宝小程序 

1.png

pages.json:给支付宝的导航栏设置透明

{
	"path": "pages/agent/agent",
	"style": {
		"navigationStyle": "custom",
		"enablePullDownRefresh": false,
		"mp-alipay": {
			"transparentTitle": "always",
			"titlePenetrate": "YES"
		}
	}
}

agent页面:

支付宝加上my.setNavigationBar设置标题文字即可,微信需要自定义导航栏

html: 

<template>
    <view style="height: 100vh;position: relative;">
		<view class="bj"></view>
		<view class="status_bar"></view>
		<!-- #ifndef MP-ALIPAY -->
		<view class="back" @click="back" :style="{ top: menuButton.top + 'px', height: menuButton.height + 'px' }">
			<view class="text1"></view>
			代理中心
		</view>
		<!-- #endif -->
</template>

js:

<script>
	export default {
		data() {
			return {
				menuButton: {}
			}
		},
		onLoad() {
			// #ifdef MP-WEIXIN
			this.menuButton = uni.getMenuButtonBoundingClientRect()
			// #endif
			
			// #ifdef MP-ALIPAY
			my.setNavigationBar({
				title: '代理中心'
			})
			// #endif
		},
		methods: {
			back() {
				uni.navigateBack({
					delta: 1,
				})
			},
		}
	}
</script>

 css:

.bj {
	background: linear-gradient(180deg, #ffbdbd, #ff8f8f);
	height: 460rpx;
	width: 100%;
	position: absolute;
}
.status_bar {
	height: var(--status-bar-height);
	width: 100%;
}
.back {
	position: fixed;
	z-index: 99;
	display: flex;
	align-items: center;
	color: #292929;
}
.text1 {
	margin-right: 14rpx;
	margin-left: 32rpx;
	width: 16rpx;
	height: 16rpx;
	border-left: 2px solid #292929;
	border-top: 2px solid #292929;
	transform: rotate(-45deg);
}

参考:小程序文档 - 支付宝文档中心

4、获取节点信息,支付宝不兼容uni.createSelectorQuery().in中的in

//#ifdef MP-WEIXIN
uni.createSelectorQuery().in(this).selectAll('.content_box').boundingClientRect(res => {
	this.nodeData = res
}).exec();
//#endif
//#ifdef MP-ALIPAY
my.createSelectorQuery().selectAll('.content_box').boundingClientRect().exec(res => {
	this.nodeData = res[0]
})
//#endif

5、客服

open-type="contact" 仅支持:微信小程序、百度小程序、快手小程序、抖音小程序

<!-- #ifdef MP-WEIXIN -->
<button open-type="contact"></button>
<!-- #endif -->

支付宝接入客服:

首先在支付宝开放平台开通蚂蚁智能客服:支付宝开放平台-->控制台-->小程序信息-->在线客服

1.png

开通后点击小程序的右上角三个点就有客服功能了

1.png

如果想点击某个按钮时进入客服页面:1.png

<contact-button
  tnt-inst-id="企业编码"
  scene="聊天窗编码"
  size="咨询按钮大小"
  color="咨询按钮颜色"
  icon="咨询按钮图片url,例如:https://xxx/service.png"
/>

 tips: 企业编码、聊天窗编码在:

1.png

 1.png

tips: contact-button本身无法修改样式,若想达到自己想要的效果如:

1.png

 方法:父元素设置相对定位 + overflow: hidden超出隐藏,子元素里循环很多个contact-button出来,绝对定位,并使用opacity:0隐藏,代码:

<view style="position: relative;width: 100%;overflow: hidden;display: flex;">
	<view>官方客服</view>
	<view class="iconfont iconfanhui1"></view>
	<view class="alipyContact" style="opacity:0; position: absolute;">
		<contact-button size="40rpx" v-for="(item,index) in [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]" :key="index" />
	</view>
</view>

 参考:小程序文档 - 支付宝文档中心

6、position: fixed在支付宝小程序会被弹出的键盘顶上去

 如下图: “同意《服务和隐私协议》”被弹起的键盘带上来了

 1.png

7、uniapp小程序超出限制:Error: 分包大小超过限制,main package source size 4199KB exceed max limit 2MB

改了几行代码上传时发现超过限制,解决方法: 

1.png

1.png参考: 

https://www.cnblogs.com/Denny_Yang/p/16769455.html

 8、uniapp 使用 require 绝对路径引入文件时,报错“文件查找失败”

 我在 main.js 中使用绝对路径引入:

// 引入请求封装,将app参数传递到配置中
require('/config/request.js')(app)

 出现:

1.png

原因:

参考:js 文件引入 | uni-app官网

1.png

解决方案:使用相对路径即可

// 以下两种方式都可以
require('config/request.js')(app)
require('./config/request.js')(app)

9、页面跳转时,绝对路径和相对路径的区别

以`uni.navigateTo`举例:

uni.navigateTo({
	url: 'pagesB/pages/publishQues'
})
uni.navigateTo({
	url: '/pagesB/pages/publishQues'
})
`uni.navigateTo` 的 `url` 参数支持相对路径和绝对路径两种方式。
 
相对路径是相对于当前页面的位置进行计算,而绝对路径是从根目录开始计算
 
- `uni.navigateTo({ url: 'pagesB/pages/publishQues' })` 使用的是相对路径。
如果当前页面路径是 `pagesB/pages/index`,那么相对路径 `pagesB/pages/publishQues` 
会拼接在当前页面路径的基础上,
得到最终跳转路径为 `pagesB/pages/pagesB/pages/publishQues`。
 
- `uni.navigateTo({ url: '/pagesB/pages/publishQues' })` 使用的是绝对路径。
无论当前页面路径是什么,绝对路径 `/pagesB/pages/publishQues` 都是从根目录开始计算,
因此最终的跳转路径是 `pagesB/pages/publishQues`。

本文转自https://blog.csdn.net/m0_59962820/article/details/131835746如有侵权可联系删除

猜你喜欢

【UniApp】如何在uniapp中实现全局状态管理
如何在uniapp中实现全局状态管理,需要具体代码示例引言:在uniapp开发中,全局状态管理是非常重要的一部分,它可以方便地实现数据共享和状态管理,提高开发效率。本文将介绍如何在uniapp中实现全局状态管理,并提供具体的代码示例。一、什么是全局状态管理?全局状态管理是一种用于管理应用程序全局状态的方法。它可以将应用程序的状态存储在一个全局的数据仓库中,并通过触发和监听状态的变化,实现不同组件之间的数据共享和通信。在uniapp中,全局状态管理可以帮助我们解决多个组件之间的数据传递和
发表于:2023-12-11 浏览:447 TAG:
【UniApp】使用uniapp实现懒加载图片效果
使用uniapp实现懒加载图片效果随着移动互联网的发展,图片在移动应用中扮演着重要的角色。然而,过多的图片加载可能会导致页面加载速度缓慢,影响用户体验。为了解决这个问题,我们可以使用uniapp框架提供的懒加载图片效果,使图片在需要时才加载,节省了页面加载时间,提高了用户体验。首先,我们需要确保已经安装好uniapp开发环境,并创建好一个uniapp项目。接下来,我们将开始编写代码。创建一个Vue组件在uniapp项目中,我们可以创建一个独立的Vue组件来实现懒加载图片效果。打开uni
发表于:2023-12-09 浏览:385 TAG:
【UniApp】使用uniapp实现日历功能
使用uniapp实现日历功能随着移动互联网的发展,日历功能成为了许多APP和网站的必备组件之一。在uniapp这个跨平台开发框架中,我们可以很方便地实现日历功能,并且兼容多个平台,包括iOS、Android等。首先,我们需要用到uniapp的组件库中的日期选择器。uniapp提供了picker组件,其中mode属性可以设置为&quot;date&quot;来实现日期选择。具体代码如下:&lt;template&gt; &nbsp;&nbsp;&lt;view&gt; &nbsp;&amp;nb
发表于:2023-12-23 浏览:340 TAG:
【UniApp】uniapp怎么判断是否安装微信
随着移动互联网的发展,微信已经成为了国内用户相对来说最为普及和使用最为广泛的社交工具。对于一些涉及到微信相关功能的应用程序开发者来说,需要在程序中加入判断用户是否已经安装了微信应用,以便在用户没有安装微信的情况下给出相应的提示或选择其他途径实现相关功能。在uniapp开发中,我们可以使用uniapp自带的uni.getProvider()函数来判断当前设备是否安装了某个提供商的应用程序。而微信作为目前国内使用最为广泛的社交工具之一,这里我们主要介绍如何使用uni.getProvider
发表于:2023-12-17 浏览:391 TAG:
【UniApp】Flutter与uniapp的异同:从框架架构到开发语言的对比
在移动应用开发领域,Flutter和uniapp都是备受关注的跨平台框架,它们在很多方面都具有相似之处,但也存在着一些个别的差异。本文将从框架架构、开发语言以及跨平台能力等方面对比Flutter和uniapp,以帮助开发者更好地选择适合自己项目的开发工具。一、框架架构Flutter是由Google开发的开源框架,其核心特点是使用Dart语言进行开发。Flutter的框架架构是基于自绘引擎的方式,通过渲染引擎直接绘制UI界面,不依赖于平台的原生控件。这种方式使得Flutter具有较高的灵活性和自定
发表于:2024-03-31 浏览:273 TAG:
【UniApp】UniApp实现支付宝小程序的开发与上线流程解析
UniApp是一款基于Vue.js框架的跨平台开发工具,能够快速实现一次编码,多端发布的效果。作为开发者,我们可以利用UniApp来实现支付宝小程序的开发,同时本文将对支付宝小程序开发与上线流程进行详细解析,并提供相应的代码示例供参考。一、UniApp与支付宝小程序开发环境搭建1.确保已安装好Node.js环境,如未安装,可前往Node.js官网下载并安装最新版本。2.在命令行中执行以下命令,安装全局Vue-cli脚手架工具:npm&nbsp;install&nbsp;-g&nbsp;
发表于:2023-12-26 浏览:364 TAG:
【UniApp】Flutter与uniapp哪个更适合移动应用开发需求
今天,移动应用开发已成为越来越多企业和个人关注的重点领域。对于开发者来说,选择一种适合自己需求的开发框架至关重要。在众多可选的开发框架中,Flutter和uniapp都是备受关注的两个。本文将比较这两个框架的优缺点,帮助读者选择最适合自己的移动应用开发方案。首先,让我们来了解一下这两个框架。Flutter是由谷歌开发的跨平台移动应用开发框架,其使用Dart语言进行编码。而uniapp是由DCloud开发的跨平台应用框架,其使用了Vue.js作为基础框架。对比Flutter和uniapp,首先要考
发表于:2024-03-31 浏览:289 TAG:
【UniApp】利用uniapp实现图表展示功能
利用uniapp实现图表展示功能随着信息化时代的到来,数据的处理和可视化成为了各个领域的重要任务。在移动端开发中,图表展示功能也成为了一个不可或缺的组成部分。而利用uniapp框架实现图表展示功能,不仅可以快速开发出高效的移动应用程序,还能兼容多个平台,提供一致的用户体验。一、准备工作在开始之前,我们首先需要准备好uniapp的开发环境,并且在项目中引入常用的图表库echarts。我们可以在uniapp的插件市场中搜索echarts插件,并按照提示进行安装和引入。二、开发步骤创建一个新
发表于:2023-12-23 浏览:326 TAG:
【UniApp】uniapp数据更新却没有渲染页面怎么办
随着移动互联网的快速发展,移动应用程序也越来越普及,很多企业和开发者都选择使用跨平台开发工具来开发移动应用程序。Uniapp作为当前最热门的跨平台移动应用开发框架之一,因其可一次编写代码,多平台运行的优点而受到开发者的广泛青睐。然而,有时候我们在使用Uniapp进行开发时,会遇到数据更新却没有渲染页面的情况。那么,我们该如何解决这个问题呢?首先,我们需要了解这个问题产生的原因。一般来说,数据更新却没有渲染页面的问题,是由于数据更新后,Vue组件没有自动重新渲染造成的。这是因为Vue的响
发表于:2023-12-25 浏览:373 TAG:
【UniApp】UniAPP 安卓应用版本自动更新及下载安装
一. 前言近期进行 Uniapp 的开发,在项目发布的最后需要实现版本的自动检测和更新下载功能 特地在此进行文章的整理,以方便道友们减少前进道路上的坎坷,多谢指摘 …注: 本次指导,以更新 安卓应用 为案例(非热更新),ios、小程序等可举一反三,稍作优化!二. 设计思路 1.&nbsp;&nbsp;在服务端配置一个最新的应用版本号; 并将打包生成的&nbsp;apk(安卓应用)&nbsp;置于服务器,保证可成功访问的链接 2.&nbsp;&nbsp;在前端&nbsp;Uniapp&amp;nbs
发表于:2023-12-12 浏览:404 TAG: