免费试用

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

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
艾维购社交电商app小程序开发
艾维购是一款集社交和电商于一体的移动应用程序。该程序的特点是通过用户之间的互动,来推动交易和购买行为的产生。艾维购通过社交集成,将线上店铺与即时消息和动态化的内容结合起来,为消费者提供一种全新的购物体验。艾维购主要基于小程序平台开发,本文将详细介绍其原理和
2023-08-09
web前端如何开发小程序
小程序是一种轻量化的应用程序,可以在微信、支付宝等平台上运行。开发小程序的前端技术也和网页开发很相似,主要使用HTML、CSS和JavaScript等语言,而且小程序还提供了自己的组件和API来进行开发。下面将详细介绍如何使用前端技术进行小程序开发,包括小
2023-08-09
python怎么用来开发小程序
Python 是一种高级编程语言,使用该语言,可以开发各种类型的应用程序,包括小程序。本文将通过详细介绍 Python 中的相关库和框架,向您展示如何使用 Python 开发小程序。1. FlaskFlask 是一个轻量级 Web 应用程序框架,适合于开发
2023-08-09
ar特效小程序开发哪个品牌好用
随着AR技术的不断发展,越来越多的品牌推出了AR特效小程序开发的产品。在选择AR特效小程序开发品牌时,需要考虑产品的原理和使用体验。下面将介绍几个知名品牌的AR特效小程序开发产品以及它们的原理和使用体验。1. 腾讯AR引擎腾讯AR引擎是一款AR技术开放平台
2023-08-09
go做exe
在本教程中,我们将讨论如何使用Go语言创建可执行文件(.exe文件)。在开始之前,我们先了解一下Go语言以及Windows系统上的可执行文件的基本原理。Go语言(Golang)是一种静态类型、编译型的编程语言,由谷歌公司开发。Go语言的特点包括简单易学、高
2023-05-26
运城免费小程序开发工具
运城免费小程序开发工具,是运城市为了鼓励小微企业和创业者积极开发小程序而推出的一款免费开发工具,旨在提高小微企业和创业者的竞争力和品牌形象。下面将详细介绍该开发工具的原理和具体操作步骤。一、原理运城免费小程序开发工具基于小程序平台的开发原理,使用前端技术H
2023-05-26
新疆知识付费类小程序开发工具
随着知识付费的兴起以及微信小程序的流行,越来越多的机构和个人开始尝试开发知识付费类小程序。这种小程序可以根据用户的需求提供各种知识咨询和培训服务,如在线讲座、课程视频、资料下载等。本篇文章将详细介绍新疆知识付费类小程序开发工具的原理和应用。1.前置技术首先
2023-05-26
小程序开发工具惊现骨架屏功能
骨架屏是一种在页面尚未完全加载前先展示出来的基础版页面。它提供了一个界面的占位符,使得页面加载完成后视觉上变得更加平滑和连续。骨架屏是一个页面加载优化的方案,能够增加用户体验,让用户感觉页面加载速度更快。在小程序开发中,骨架屏功能也非常重要。小程序开发工具
2023-05-26
小程序开发工具一般什么版本
小程序开发工具一般采用的是微信官方提供的开发工具,目前最新版本是1.03.2006010版,支持以下操作系统:Windows 7 及以上版本,Mac OS 10.9 及以上版本,同时,也支持 Linux 操作系统。下面我们就来详细介绍一下小程序开发工具的版
2023-05-26
小程序商城前端开发工具有哪些
小程序商城是近年来兴起的一种新型电商模式,随着市场的不断推广,越来越多的商家、开发者在探索小程序开发领域。小程序商城前端开发工具的出现,大大地降低了开发的难度,提高了开发效率。本文将介绍小程序商城前端开发工具的原理和详细介绍。一、小程序商城前端开发在讲解小
2023-05-26
微信小程序前端开发工具和语言
微信小程序前端开发工具和语言微信小程序是一种全新的应用程序类型,它采用了全新的开发方式和框架,完全跳过了传统的浏览器中间层,直接采用APP的方式,在微信中进行展示,可以说是轻量级APP应用程序。微信小程序采用了快速开发的模式,它使用的是前端的开发方式,非常
2023-05-26