免费试用

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

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-09
安阳开发小程序的公司有哪几家公司
安阳市是中国河南省的一个重要城市之一,其繁荣的经济和人口密集度也吸引着众多小程序开发公司的关注。本文将介绍几家安阳的小程序开发公司,以供参考。1. 飞鹰科技安阳飞鹰科技有限公司是一家致力于为中小企业提供全方位数字化转型解决方案的互联网公司。公司的团队由来自
2023-08-09
安徽生鲜小程序开发费用多少
随着时代的发展,互联网+和移动互联网成为了一个趋势,电商也成为了一种趋势。如今,随着人们对生鲜品质的要求越来越高,越来越多的人们开始选择购买在线上的生鲜产品。安徽生鲜小程序的出现,就是为了满足消费者对生鲜产品的需求。一、安徽生鲜小程序的定义安徽生鲜小程序是
2023-08-09
uniapp开发小程序和app
Uniapp是一个基于Vue的跨平台开发框架,可用于开发小程序、App以及H5应用。相比于传统的开发方式,Uniapp可以实现一份代码多端运行,开发效率更高且可以快速上线。当我们选择使用Uniapp进行开发时,我们需要先创建一个Uniapp项目,选择开发小
2023-08-09
app和小程序开发专题
随着智能手机的普及,移动应用已经成为人们生活中不可或缺的一部分。而如今,越来越多的人开始关注小程序的热潮,小程序与app有何区别?他们的开发原理又是什么呢?一、什么是App?App是Application的简称,翻译为中文就是应用程序。App可以运行在移动
2023-08-09
app单机版小程序开发
随着移动互联网的发展,越来越多的企业开始重视自己的移动应用和小程序开发。在这其中,app单机版小程序是一种非常受欢迎的开发方式。本文将介绍app单机版小程序开发的原理和详细过程。一、什么是app单机版小程序App单机版小程序,就是一种运行在本地的应用程序,
2023-08-09
微信小程序开发工具ios 版本
微信小程序是一种全新的应用形式,它无需安装即可使用,只需要打开微信即可访问小程序。小程序可以帮助企业快速部署轻应用,提高用户粘性和服务效率,同时节约了安装和卸载的时间和流量。微信小程序开发工具ios 版本则是用来开发和调试微信小程序的工具,下面介绍一下这个
2023-05-26
退出小程序开发工具是什么意思
小程序开发工具是微信开发团队为开发者提供的一款开发工具。通过该工具,开发者可以方便快速地开发小程序,并进行代码调试和实时预览等操作。在开发小程序时,经常需要用到小程序开发工具,但是有时在使用过程中可能会遇到“退出小程序开发工具”的情况。下面将详细介绍这种情
2023-05-26
四川教育类小程序开发工具有哪些软件
四川教育类小程序开发工具,指的是用于制作和开发教育类小程序的软件工具。在当前数字化、信息化的时代,教育类小程序成为一个新的重要市场,有着广阔的发展前景。因此,对于开发教育类小程序的工具,一直是开发者非常关注的问题。以下是四川教育类小程序开发工具的介绍。一、
2023-05-26
双鱼小程序开发工具
双鱼小程序开发工具是基于微信小程序平台开发的一款开发工具,旨在提供一种简单、快速、易用的小程序开发环境,方便开发者快速开发小程序。双鱼小程序开发工具提供了一系列的工具和功能,包括代码编辑器、调试器、模拟器、代码片段等。通过这些工具和功能,开发者可以更加方便
2023-05-26
佳木斯百度小程序开发工具
佳木斯百度小程序开发工具是一种基于百度智能小程序平台的开发工具,旨在为开发者提供快速简便的小程序开发环境,帮助开发者更快的开发自己的小程序。佳木斯百度小程序开发工具基于百度AI技术,具有“一键开发”的特点,使得开发者能够通过简单的操作快速完成小程序的开发。
2023-05-22
国内食品网店小程序开发工具
随着移动互联网的快速发展,越来越多的食品网店开始采用小程序作为新的营销方式。小程序是一种可以在微信生态内运行的轻量级应用,无需下载安装即可使用。针对食品网店来说,通过开发小程序可以提升消费者的购物体验、加强与用户的互动、提高用户黏性和复购率等。国内食品网店
2023-05-22