免费试用

跨平台小程序在线开发工具,用做网页的技术做小程序,兼容微信、支付宝、抖音、快手、百度等主流小程序平台!

uniapp开发的微信小程序坑

Uniapp是目前比较流行的一种跨平台开发框架,它可以使用一套代码基于Vue框架开发出同时支持多个平台的应用程序,包括H5、微信小程序、支付宝小程序、APP等。尽管Uniapp有很多优点,但是在开发微信小程序时也存在一些坑点,下面是对其中几个坑点的原理分析以及详细介绍。

一、rpx与px单位的转换

微信小程序使用的单位为rpx,但是在Uniapp中使用的是px单位,这就需要将px转换为rpx单位。Uniapp提供了一个名为“flexible”的插件,它会自动计算出当前设备的rpx单位的换算比例。需要在入口组件中引入该插件并且配置设计稿尺寸,如下:

```javascript

import '@/common/js/flexible.js';

// 设计稿尺寸

uni.setMatchedLayoutSize({

width: 750,

height: 1334

});

```

在App.vue中设置基准字体大小为50px,其实际代码如下:

```css

html {

font-size: calc(100vw / 3.75);

font-family: PingFang-SC-Regular, sans-serif;

}

```

具体实现原理是通过JS动态计算出当前设备的dpr(设备像素比)和设备宽度,然后将页面的font-size设置为width/dpr/10,进而实现了px到rpx的转换。

二、页面跳转传参

在微信小程序中,可以通过wx.navigateTo()实现页面跳转并传递参数。但是在Uniapp中,需要使用uni.navigateTo()跳转页面,但是该方法并没有原生的options属性用于传递参数。如何实现页面跳转并传递参数呢?具体有以下几种方法:

1、通过URL传参,比如在跳转页面时将参数拼接到URL上,如页面跳转到detail页面并传递id为1的参数:

```javascript

uni.navigateTo({

url: '/pages/detail/detail?id=1'

})

```

在detail页面中,可以通过以下代码获取该参数:

```javascript

this.$route.params.id // 输出1

```

2、通过uni.navigateBack()返回时传递参数,需要在前一页面中设置onUnload方法,在离开页面时保存要传递的参数,并在返回时通过uni.navigateBack()方法的参数传递回去。

具体实现可以参考以下代码:

```javascript

// 前一页页面中

onUnload: function() {

if (this.isChanged) {

uni.setStorageSync('isChanged', true);

}

}

// 本页中,返回上一页时触发

uni.navigateBack({delta : 1, params: {isChanged: uni.getStorageSync('isChanged')}});

```

在上一页中,可以通过以下代码获取该参数:

```javascript

onShow: function() {

var pages = getCurrentPages();

var prevPage = pages[pages.length - 2];

if (prevPage){

if (prevPage.$route.params.isChanged) {

// do something

}

}

}

```

三、微信小程序Swiper组件的高度问题

微信小程序的Swiper组件可以自适应容器高度,但是在转化为Uniapp开发时,容器高度就变成了0。这是因为在微信小程序中,Swiper组件的高度是在wx.createSelectorQuery()中计算的,而在Uniapp中wx.createSelectorQuery()则被替换为uni.createSelectorQuery(),导致了高度计算不正确,解决方法有以下两种:

1、使用uni.createIntersectionObserver()监听Swiper组件上下滚动,获取到Swiper的实时高度:

首先需要在Swiper组件外面嵌套一个view,同时将view的height设置为100%。然后通过uni.createIntersectionObserver()监听view的位置变化,获取到当前view的高度,即Swiper组件的高度,进而解决问题。

2、在swiper组件中加入样式white-space: normal,如:

```css

.swiper-slide {

white-space: normal;

}

```

通过这个方法,swiper组件高度也会自适应父容器。

四、onShareAppMessage无法在组件中直接使用

在微信小程序中,在组件中使用onShareAppMessage可以实现转发功能,而在Uniapp中无法在组件中直接使用该方法,需要通过`this.$parent.onShareAppMessage()`调用父页面的onShareAppMessage方法。

五、微信小程序navigator跳转新建页面在Uniapp中无法打开

在微信小程序中,在navigator组件中添加属性target="_blank"可以打开一个新页面,但是在Uniapp中,添加该属性后页面依然是在同一个页面中打开的。解决方法也很简单,只需要在navigator组件上包裹一个view标签即可,如:

```html

跳转新页面

```

以上就是Uniapp开发微信小程序时容易遇到的坑点,希望对大家有所帮助。


相关知识:
阿里云钉钉小程序开发版本
阿里云钉钉小程序是基于钉钉平台的应用开发,它是一种轻量级应用,主要用于简单的流程展示、快速的信息查看和便捷的数据录入。相较于大型应用而言,钉钉小程序无需专业的前端开发经验,只需要掌握Javascript技能就可以轻松上手。在本篇文章中,我将详细介绍阿里云钉
2023-08-09
安徽小程序开发性价比高的公司
随着移动互联网的不断发展,小程序已经逐渐成为很多企业和个人的营销工具。在安徽,小程序开发公司也越来越多。那么,哪些公司的小程序开发性价比高呢?我认为,开发团队的实力、技术水平、信誉度、服务质量等方面都应该考虑进去。我推荐安徽的一家小程序开发公司——"趋势互
2023-08-09
安全管理微信小程序开发
随着人们对信息安全和隐私的关注不断提高,微信小程序的安全性也变得越来越重要。在这篇文章中,我将介绍微信小程序安全管理的原理和具体措施。一、微信小程序的安全架构微信小程序的安全架构主要包括三个环节:小程序端安全、通讯过程安全和服务器端安全。下面分别进行介绍。
2023-08-09
vue开发的小程序能用小程序改吗
Vue是一个流行的前端框架,小程序是一种轻量级应用。两者背景和应用场景不同,但也有相似之处。通过Vue开发的小程序,在实现小程序的同时,也可以有较好的可维护性和开发效率。同时,小程序也可以在Vue开发的基础上进行修改和补充。下面将从两个方面介绍Vue开发的
2023-08-09
qq小程序开发平台官网
qq小程序开发平台是腾讯公司提供的一款开发工具,旨在帮助开发者快速开发适用于qq平台的小程序。它具有很多特点,例如易于上手、开发效率高、可视化开发等等,为开发者提供了极佳的开发体验。首先,qq小程序开发平台是一款易于上手的开发工具。它提供了大量的参考文档和
2023-08-09
ar互动小程序开发价格
AR (增强现实)互动小程序的开发需要消耗大量的人力,物力以及时间。一般情况下,制作AR互动小程序的时间周期较长,造价也相应较高。接下来,我们将详细介绍AR互动小程序开发的原理和相关的价格信息。AR互动小程序开发的原理与成本AR技术的性质是将虚拟信息与真实
2023-08-09
app开发与小程序开发之争
随着智能手机的普及,移动应用的需求不断增长,app和小程序成为了用户日常生活中必不可少的一部分。但是,在选择开发移动应用时,开发者需要考虑到多方面因素,包括开发难度、开发成本、用户体验等等。本文将介绍app开发与小程序开发之争,帮助读者了解两者的原理和优劣
2023-08-09
0代码手把手带你开发小程序
小程序是一种可以在微信、支付宝、百度等平台内使用的轻量级应用,有着体积小、易于分享、使用便捷的特点。而0代码开发则是针对不懂编程的用户提供的一种编程方式,即通过可视化界面进行操作来生成代码。下面我将介绍如何利用0代码手把手开发小程序。第一步:选择一个0代码
2023-08-09
我用新版的微信小程序开发工具
微信小程序是一种轻量级的应用程序,其主要用途是提供一种快速简捷的方式,让用户能够使用手机中的应用程序,而无需下载完整版的应用程序。它主要通过微信内部的小程序生态系统来运行。微信小程序分为原生和非原生两种。原生小程序需要使用微信小程序开发工具,该工具是一款能
2023-05-26
吉林自助洗车小程序开发工具怎么用啊
吉林自助洗车小程序开发工具是一款为吉林地区的自助洗车场所提供智能预约和支付服务的小程序开发工具。该工具结合了微信平台的特点和吉林地区自助洗车场所的实际需求,打造了一款高效便捷的小程序,满足客户的洗车需求,提升用户体验。下面我们来介绍一下它的原理和使用方法。
2023-05-22
滨州微信小程序开发工具
微信小程序是一种轻量级应用,通过微信平台展示和使用,并可在微信内部直接运行,无需下载和安装。而滨州微信小程序开发工具,就是一种用于创建和开发微信小程序的工具。下面将详细介绍关于滨州微信小程序开发工具的原理和使用方法。## 原理介绍滨州微信小程序开发工具原理
2023-05-22
vue3项目vite打包小程序
Vue3是目前最新的Vue版本,它拥有更快的渲染速度和更好的性能表现。而vite则是一个基于ESM的构建工具,它利用原生ES模块的特性,实现了更快的开发体验和更快的构建速度。在本文中,我们将介绍如何使用vite来打包小程序。1. 安装vite首先,我们需要
2023-04-06