免费试用

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

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


相关知识:
安徽多层带式烘干机小程序开发
安徽多层带式烘干机是一种常见的工业烘干设备,广泛应用于食品、化工、医药、建材等多个领域。本文基于该设备的原理和实际应用,介绍了如何利用小程序进行设备的控制和监测。1. 设备原理多层带式烘干机是一种连续式干燥设备,其工作原理是通过加热器将热量传递给烘干机中的
2023-08-09
安康互动小程序开发公司推荐
随着移动互联网的快速发展,小程序逐渐成为移动端应用的一种新形态,它不需要下载安装即可使用,用户体验更加流畅,而且小程序成本更低,想要开发小程序的企业和个人也越来越多。安康互动是一家专业从事小程序开发的公司,下面将为大家介绍安康互动小程序开发公司的原理以及详
2023-08-09
安康o2o商城小程序开发
安康o2o商城小程序是一款基于微信公众平台开发的移动端应用程序,主要提供线上商城购物、订单服务、用户中心等功能,旨在提供更加便捷的购物方式及良好的用户体验。以下是安康o2o商城小程序的详细介绍:1. 技术原理安康o2o商城小程序基于微信原生开发框架,使用H
2023-08-09
安卓微信小程序开发费用
安卓微信小程序开发费用微信小程序是近年来越来越火爆的开发方式,因其轻量化、简易化的特点,受到了越来越多的开发者和企业的关注。其中,安卓微信小程序是市场上最受欢迎的类型之一。那么,安卓微信小程序开发费用是多少呢?一般情况下,开发一款安卓微信小程序的费用会因多
2023-08-09
安卓怎么开发微信小程序
微信小程序是一种基于微信平台独立开发的移动应用程序,可在微信中直接使用,无需下载安装即可运行,是一种轻量级的应用程序。而安卓开发也是一种基于安卓系统的软件开发,下面我们来了解一下如何在安卓系统中开发微信小程序。首先,安卓开发微信小程序需要用到微信小程序开发
2023-08-09
uniapp开发的小程序怎么上线
Uniapp是一款前端框架,可以用于快速开发小程序、H5、APP等多种平台的应用。在完成Uniapp应用的开发后,需要将其上线到小程序平台上,才能让用户使用和体验。本文将介绍Uniapp小程序上线的详细步骤和原理。一、注册小程序账号在进行Uniapp小程序
2023-08-09
idea中java生成exe
标题:在IntelliJ IDEA中将Java应用程序转换为EXE文件导语:从零起步,本教程将向您解释如何将Java应用程序生成EXE可执行文件。我们将从安装插件开始,然后逐步讲解操作方法,最后介绍原理和注意事项。目录:1. 什么是EXE文件?2. 为什么
2023-05-26
fuzor生成exe
Fuzor生成EXE(原理及详细介绍)Fuzor是指将多个独立的文件整合到一个单一的可执行文件(EXE)中的一种技术,通常用于软件打包和分发。生成的可执行文件可以在没有安装源程序的系统上运行。本文将为您介绍Fuzor生成EXE文件的原理和详细过程。1. F
2023-05-26
中山好的微信小程序开发工具
微信小程序是一种轻量级的应用程序,其在微信平台上进行开发和使用,不需要用户下载安装,可直接使用。微信小程序已经成为企业和个人开发者展示自己和推广产品的最佳方式之一。中山好的微信小程序开发工具是一种在中山好公司内部使用的工具,可以协助企业快速、便捷地开发出自
2023-05-26
西安小程序开发工具哪些好用点
随着移动互联网和智能手机的发展,微信等社交平台也开始推出小程序,小程序的出现解决了原来需要下载安装App才能使用的问题,只需要在微信平台上搜索关键字即可使用。因此,小程序的开发也逐渐受到人们的关注。本文将介绍一些西安小程序开发工具,帮助开发者更快速、高效地
2023-05-26
微信小程序开发工具版本怎么选择下载软件
微信小程序开发工具是一款专门为开发者提供的全流程开发工具,它提供了丰富的开发工具和调试功能,可以大大提高小程序的开发效率。但是,开发工具也是不断升级的,在下载和选择版本时需要谨慎选择。接下来,本文将详细介绍微信小程序开发工具版本选择的原理和方法。微信小程序
2023-05-26
微信小程序开发工具如何列式编程
微信小程序开发工具是一款完善的开发工具,能够方便地快速开发小程序。在小程序开发中,编写代码是必不可少的一步。小程序开发工具提供了几种不同的编程方式,其中一种是列式编程。本文将详细介绍微信小程序开发工具如何进行列式编程,包括原理和具体步骤。一、什么是列式编程
2023-05-26