免费试用

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

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


相关知识:
百度小程序开发工具源码
百度小程序开发工具是一款用于开发和调试百度小程序的集成开发环境(IDE)。它提供了一系列功能,使得开发者可以方便地创建、调试和发布小程序。本文将介绍百度小程序开发工具的原理和详细使用方法。百度小程序开发工具的原理是基于基本的前端开发技术,主要包括HTML、
2023-08-23
爱奇艺微信小程序开发工具怎么用
爱奇艺微信小程序开发工具是一款提供基础开发环境、工具和服务的开发工具,可帮助开发者快速地构建出微信小程序应用。本文将对爱奇艺微信小程序开发工具的使用进行详细介绍。一、爱奇艺微信小程序开发工具原理爱奇艺微信小程序开发工具使用的是微信小程序原生开发框架和语言,
2023-08-09
安装微信小程序开发者工具
微信小程序开发者工具是官方提供的一套用于开发、调试和发布微信小程序的工具集。它集成了小程序代码编辑器、代码调试器、模拟器、图片优化器等多个小程序开发所需要的工具,是小程序开发的重要利器。安装微信小程序开发者工具可以简化小程序的开发过程,下面我将详细介绍安装
2023-08-09
安卓小程序开发案例
安卓小程序是一种轻量级应用程序,这种应用程序不需要下载和安装,通过扫描二维码或链接即可直接使用。安卓小程序的应用场景非常广泛,可以用于电商购物、娱乐游戏、教育学习等方面。那么,安卓小程序是如何被开发出来的呢?安卓小程序的原理安卓小程序实际上是一种轻量级的网
2023-08-09
jeecgboot微信小程序开发
Jeecgboot是国内领先的开源项目,基于SpringBoot和SpringCloud的通用企业级快速开发平台,包含代码生成器、在线开发平台、微服务架构、统一授权、单点登录、云存储、分布式任务调度等模块,支持前后端分离,提供整套完整的解决方案。现在,越来
2023-08-09
app小程序开发部署
App和小程序是我们生活中经常接触到的移动应用,尤其是近年来随着手机普及和移动互联网的发展,App和小程序更是成为了人们生活中不可或缺的一部分。那么,怎么才能让这些应用在用户手中顺畅流畅地运行呢?这就需要进行App小程序的开发和部署。下面,我将结合实例,详
2023-08-09
jar如何打包exe
在本文中,我们将解释如何将JAR文件打包成EXE文件。Java应用程序通常是将Java源代码编译成Java字节码,然后通过Java Virtual Machine (JVM)执行字节码的形式进行分发和运行。分发Java应用程序时,通常采用将所有相关的Jav
2023-05-26
flutter 打包exe
在本教程中,我们将详细解释如何用 Flutter 打包一个 Windows 的可执行文件 (exe)。首先让我们了解一下 Flutter 是什么,然后进入打包流程的细节。什么是 Flutter?Flutter 是 Google 开发的一款开源框架,可以帮助
2023-05-26
小程序开发工具如何上传
小程序是一种轻量级的应用程序,具有跨平台、无需下载安装等特点。但是,在小程序的开发过程中,需要用到小程序开发工具来实现代码编写、调试、预览等功能。其中,上传小程序代码就是开发者将开发好的代码上传到微信公众平台后台,实现小程序发布的重要步骤。小程序上传的过程
2023-05-26
微信小程序开发工具怎么断点
微信小程序开发工具是通过调试工具来实现代码调试的,而断点调试是调试工具的一个非常重要的功能之一。在微信小程序开发中,通过设置断点可以提高代码的调试效率,同时也可以对代码进行更加精细的调试操作。一、断点调试的概念在程序开发中,断点调试是一种调试技术,即在程序
2023-05-26
全球服饰网站小程序开发工具
全球服饰网站小程序开发工具是用来开发小程序的工具,是一种全新的应用形态,与传统的APP相比,具有体积小、启动快、使用方便等优势,可以通过微信或支付宝等社交媒体的入口直接进行使用。全球服饰网站小程序开发工具采用的技术是微信小程序的技术,使用JavaScrip
2023-05-26
海南自助洗车小程序开发工具
随着物质生活水平的提高,人们越来越注重汽车的养护和维护。现在,洗车已经成为了许多人周末生活的一部分,但传统的洗车方式存在着很多问题:耗费时间、浪费水资源、对环境造成污染等等。因此,一些互联网创业公司开始研发自助洗车项目,为用户提供更加便捷、经济、环保的洗车
2023-05-22