免费试用

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

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-23
安卓开发比小程序开发
随着移动互联网普及和应用场景的不断扩大,安卓开发和小程序开发已成为广大开发者的重点关注领域。在选择开发平台时,不同的需求和目标会导致不同的选择。本文将从原理和详细介绍两个方面来探讨安卓开发和小程序开发之间的差异。一、原理安卓应用是在安卓操作系统上开发的应用
2023-08-09
安义县小程序开发定制
随着移动互联网的不断发展,小程序作为一种轻量级应用程序,受到越来越多的用户和企业的青睐。安义县小程序开发定制成为很多企业所需,那么什么是小程序,它的原理是什么,以及如何进行安义县小程序开发定制呢?下面就为大家详细介绍一下。一、什么是小程序小程序是一种不需要
2023-08-09
ktv小程序开发制作多少钱
KTV小程序是一款可以让用户在不离开家的情况下点歌、预定包厢、支付等一系列KTV服务的工具。随着移动互联网的普及,越来越多的人们倾向于使用手机来完成生活中的各种需求,而开发一款KTV小程序也成为了现代KTV必须要做的一项工作。那么,要开发一款KTV小程序需
2023-08-09
java后端程序员开发微信小程序可以吗
Java后端程序员可以开发微信小程序,但需要配合其他技术栈进行开发。微信小程序的开发分为前端开发和后端开发两部分,其中前端开发主要使用的技术栈为HTML、CSS、JavaScript,后端开发主要使用的技术栈为Java、Python等。在Java后端开发中
2023-08-09
java可以开发微信小程序么
微信小程序是一种轻量级的应用程序,可以在微信里直接运行,不需要用户下载和安装。由于微信用户数量庞大,因此开发微信小程序是市场上非常热门的技术方向之一。那么,Java 可以开发微信小程序吗?答案是肯定的。Java 可以开发微信小程序,但是需要配合一些工具和框
2023-08-09
hbuilder小程序开发
HBuilder是一款非常实用的开发工具,可以用来快速开发、调试、打包小程序项目。本文将从原理和详细介绍两方面解析hbuilder小程序开发。一、原理解析HBuilder本质上是一个基于HTML5技术的开发工具,同时也支持其他的开发语言,如Vue.js、R
2023-08-09
flash做成exe怎么还原
Flash 是 Adobe 出品的一款多媒体开发平台,用于创建基于矢量和位图的动画、游戏以及富媒体应用。Flash 文件通常以 .swf 格式为后缀,在互联网和桌面平台上广泛应用。Flash 文件可以被打包成一个独立的 exe 文件,可以在没有安装 Fla
2023-05-26
go生成exe打不开
Go 生成的可执行文件 (.exe) 无法打开的原因可能有多种,下面我们将逐一分析可能出现的问题及解决方案。### 1. 检查源代码中是否有问题在生成可执行文件之前,请确保您的 Go 源代码中没有编译错误。编译时出现错误会导致生成的可执行文件无法正常运行。
2023-05-26
应用魔方小程序开发工具有哪些功能
应用魔方小程序开发工具是一款非常实用的小程序开发工具。该工具可以帮助用户快速进行小程序的创建、开发、发布等流程操作,而且兼容不同的操作系统平台,是小程序开发者的首选工具之一。下面我为大家详细介绍一下该工具的功能原理和使用方法。应用魔方小程序开发工具主要功能
2023-05-26
微信小程序开发工具开发教程
微信小程序开发工具是一款专门用于开发和调试微信小程序的集成开发环境。它包含了代码编写、调试、调试工具、组件库、开发者社区、文档以及小程序发布等各项功能,使得开发微信小程序变得更加方便和高效。下面将详细介绍微信小程序开发工具的原理和使用方法。一、微信小程序开
2023-05-26
vscode 小程序开发工具
VS Code 是一款轻量级的开源编辑器,也是一款非常流行的代码编辑器,它拥有强大的插件生态系统和高度可定制化的界面。而小程序则是一种特殊的应用程序,它能够在微信或支付宝等平台上运行。在开发小程序时,使用 VS Code 可以提高代码编写的效率和质量,通过
2023-05-22