免费试用

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

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开发微信小程序时容易遇到的坑点,希望对大家有所帮助。


相关知识:
怎么选择百度小程序开发公司
选择百度小程序开发公司是一个关键任务,因为它将直接影响到你小程序的质量、用户体验和商业价值。在选择之前,我们需要考虑一系列因素来确保找到一家合适的公司。下面我将详细介绍一些选择百度小程序开发公司的原则和注意事项。首先,关注公司的经验和专业知识。选择一家有丰
2023-08-23
阿坝支付宝小程序开发系统怎么样
阿坝支付宝小程序开发系统是一款基于支付宝开放平台的小程序开发应用程序。目前,阿坝支付宝小程序开发系统已经应用于阿坝州旅游、交通、医疗、消防等多个领域,成为了阿坝州信息化建设的重要一环。阿坝支付宝小程序开发系统提供了完整的小程序开发流程,包括小程序开发、发布
2023-08-09
安阳外卖小程序开发多少钱
随着移动互联网的快速发展,外卖行业日益火爆,越来越多的餐厅选择开发自己的外卖小程序来提高销量和服务效率。那么,安阳外卖小程序开发多少钱呢?下面就来简要介绍一下安阳外卖小程序开发的原理和相关费用。一、安阳外卖小程序开发原理安阳外卖小程序的开发大致分为以下几个
2023-08-09
安徽自助洗车小程序开发平台官网电话
安徽自助洗车小程序开发平台官网是一个为安徽省内的洗车店提供自助洗车小程序开发、定制、上线等服务的平台。如果您在安徽省内有自己的洗车店,那么这个平台可以帮助您打造一个适合您洗车店的自助洗车小程序,提升您洗车店的用户体验和服务水平。自助洗车小程序是近年来非常流
2023-08-09
label小程序开发
小程序开发是指在微信平台上使用特定技术开发出一种基于微信平台的轻量级应用程序。小程序具有灵活性、独立性、安全性和易用性等多种优势,可以实现即开即用、不需下载和安装、无需更新等功能,因此被广泛使用。本文将从小程序的开发原理、技术特点、开发流程等方面详细介绍小
2023-08-09
hishop小程序开发者工具
hishop小程序开发者工具是一款由腾讯公司推出的小程序开发工具,旨在为开发者提供方便快捷且高效的开发体验。本文将从原理和详细介绍两个方面进行阐述。一、原理hishop小程序开发者工具主要依赖于微信开发者工具和基于微信原生框架的小程序开发标准。开发者使用h
2023-08-09
app定制开发微信小程序开发
随着移动互联网的快速发展,移动应用(App)的需求也越来越多。但是,市面上已有的应用往往无法满足用户的个性化需求,这就需要进行定制开发。App 定制开发App 定制开发是指根据客户的需求,量身打造一个专属的移动应用程序。这种方式相比于市面上的已有应用具有更
2023-08-09
app内开发小程序
随着移动互联网的发展,小程序已成为一种非常流行的应用形式。它比传统的APP占用更少存储空间,启动速度更快且功能更为丰富。但是,很多开发者仍然面临这样一个问题:如何在自己的APP内添加一个小程序?小程序是基于微信平台开发的,而要在APP内添加微信小程序的话,
2023-08-09
微信小程序开发工具与环境介绍
微信小程序是一种基于微信平台的轻应用程序,使用HTML、CSS、JS等前端技术进行开发,开发者可以直接在微信公众平台上免费申请小程序账号,并使用微信小程序开发者工具进行开发、测试、调试和发布。本文将对微信小程序开发工具与环境进行详细介绍。一、开发工具介绍1
2023-05-26
springboot微信小程序商城如何制作?
Spring Boot 是一个开源的 JavaWeb 框架,它能够快速地创建独立的、基于 Spring 的应用程序。微信小程序是微信公众平台提供的一种新型应用,它不需要下载安装,用户通过扫描二维码或搜索公众号即可打开应用。在这篇文章中,我们将介绍如何使用 Spring Boot 构建一个微信小程序商城。
2023-04-06
小程序转app步骤?
小程序转app的原理是将小程序代码包装成一个app的形式,使其在手机上能够像普通app一样使用。具体的转换方式有两种,一种是通过第三方平台进行转换,另一种是通过原生开发进行转换。
2023-04-06
微信小程序静态网页
微信小程序静态网页是指在微信小程序内部展示的一种网页形式,与传统的动态网页相比,静态网页不需要与后端服务器进行交互,所有的内容都是在前端进行展示和处理的。相比于动态网页,静态网页的加载速度更快,占用的带宽资源也更少,因此在一些对速度和流量有限制的场景下,静
2023-04-06