免费试用

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

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
安徽果蔬小程序开发费用
安徽果蔬小程序是一款方便消费者在线购买本地果蔬的工具。目前,在互联网普及的背景下,越来越多的人选择通过手机上的小程序进行购物,安徽果蔬小程序也成为了市面上备受欢迎的小程序之一。那么,这款小程序的开发费用是多少呢?本篇文章将为大家详细介绍。首先,安徽果蔬小程
2023-08-09
安卓小程序开发项目
Android小程序开发是指在Android设备上运行的一种基于Web技术的轻量级应用程序。与传统Android应用程序不同,小程序无需下载安装即可使用,用户可以直接通过扫描二维码或搜索名称来访问。Android小程序的原理和实现方式与微信小程序类似,主要
2023-08-09
安卓可以开发小程序
安卓可以通过开发小程序来让用户更方便地访问应用,同时也更加节省设备存储和带宽。小程序的概念在2016年由微信首先提出,随后也被支付宝、百度、今日头条等巨头公司采纳,迅速地发展壮大。开发安卓小程序的方法有多种,以下详细介绍其中几种常用的方法。1.使用Flut
2023-08-09
安义小程序模板开发
小程序是一种轻量化的应用,旨在提供一种更快速、更简洁的体验。它们可以在微信和其他平台上运行,允许用户在不下载手机应用的情况下使用各种功能和服务。小程序的流行与日俱增,因此,许多人定期开发自己的小程序。其中,安义小程序模板也备受追捧,所以今天我们就来介绍一下
2023-08-09
vscode 微信小程序开发
VSCode 是一款由 Microsoft 推出的免费开源代码编辑器,通过集成丰富的插件和工具,成为了众多开发者的首选。在实现微信小程序开发时,VSCode 也是开发者们首选的代码编辑器之一。微信小程序是微信生态下的开发平台,开发者可以在该平台上快速开发小
2023-08-09
ai智能名片小程序开发的大趋势
随着移动互联网的普及和智能手机的普及,用户需求越来越多样化。其中一个最显著的趋势是智能化办公,同时也促进了AI智能名片小程序开发的快速发展。AI智能名片小程序是基于微信小程序的一种业务应用,包括名片扫描、信息整合、拓展和分析等功能模块。它可以通过图像识别技
2023-08-09
小程序开发工具ios安装教程
在进行小程序开发时,我们需要使用到小程序开发工具,而小程序开发工具在不同的操作系统上安装方式也不尽相同,本篇文章将会为大家介绍如何在iOS系统上安装小程序开发工具,让我们一起来看看吧!首先,需要准备的工具及材料:1.一台iOS设备(iPhone或iPad)
2023-05-26
小程序安卓开发工具
小程序是一种基于微信生态系统的应用程序,它可以在微信中无需下载安装即可使用。小程序安卓开发工具是针对安卓开发者提供的一种开发工具,它可以帮助开发者更高效地开发小程序。小程序安卓开发工具的原理是通过仿真微信客户端环境,开发者可以在隔离的环境下完成小程序的开发
2023-05-26
微信小程序开发工具1
微信小程序是指运行在微信客户端内的应用程序,由于小程序无需下载安装,使用也很方便,因此受到越来越多开发者和用户的热爱。而微信小程序开发工具则是开发小程序的利器,能够帮助开发者快速开发出小程序。微信小程序开发工具1.05是一款基于原生技术开发的开发工具,其主
2023-05-26
上海小程序开发工具使用
上海小程序开发工具是一款由上海市互联网发展管理办公室推出的小程序开发工具,旨在为开发者提供简单易用、高效便捷的小程序开发工具。本文将对该开发工具的原理和详细使用方法进行介绍。一、原理上海小程序开发工具基于微信小程序开发平台,是一款专注于上海地区小程序开发的
2023-05-26
钉钉小程序开发工具教程
钉钉小程序是钉钉推出的一款小程序平台,通过钉钉小程序开发工具,用户可以快速开发出符合钉钉要求的小程序应用。钉钉小程序开发工具采用了基于React框架的中台架构,为用户提供了一套完整的小程序开发解决方案。本教程将介绍钉钉小程序开发工具的基本原理和详细操作步骤
2023-05-22