免费试用

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

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-23
百度小程序开发贵吗
百度小程序是一种基于百度生态系统的轻量级应用程序,通过百度智能云提供的开发工具和服务进行开发。相比于传统的APP开发,百度小程序开发具有一些独特的特点和优势。首先,百度小程序的开发成本相对较低。传统的APP开发需要专门的开发团队和大量的开发资源,而百度小程
2023-08-23
安徽游戏小程序开发
安徽游戏小程序是基于微信小程序开发的一类应用程序,主要通过微信开发者工具进行开发,支持在微信平台上通过小程序进行游戏体验。安徽游戏小程序是一种轻量级的应用程序,没有安装的繁琐,只需在微信中申请使用即可。开发原理开发安徽游戏小程序主要依赖于微信小程序的开发和
2023-08-09
rn开发小程序
小程序是一种轻量级的应用,由微信团队开发,基于微信生态圈的一个小程序平台,可以在手机上直接下载使用,无需安装。小程序可以运行在iOS和Android系统上,开发工具是微信开发者工具。小程序的开发与网页开发类似,使用的是前端技术,主要是HTML、CSS、Ja
2023-08-09
qq小程序开发者注册不了
QQ小程序是一种新型的应用程序,目前正在快速发展。作为一名开发者,想要开发自己的QQ小程序,就需要先进行开发者账号注册。但有些开发者在注册账号时遇到了问题,无法完成注册。本文将详细介绍QQ小程序开发者注册的原理和可能遇到的问题。一、QQ小程序开发者账号的注
2023-08-09
python接入小程序云开发
小程序云开发是一项基于腾讯云服务的全新开发模式,它通过提供后端服务、数据库和云存储功能,帮助开发者快速开发小程序应用。在小程序云开发中,开发者无需管理服务器、数据库和存储,只需要编写前端代码和后端云函数即可完成开发。而Python是一种功能强大的编程语言,
2023-08-09
php开发后台开发答题小程序
答题小程序是一种交互式教学软件,可以有效提高学生对知识点的掌握程度。其中,后台开发是答题小程序的重要组成部分之一。本文将从原理和详细介绍两个方面来讲解如何用PHP开发一个答题小程序的后台。一、原理答题小程序后台开发的原理是利用PHP编写接口,通过接收和返回
2023-08-09
angular微信小程序开发框架
Angular 微信小程序开发框架(Angular WeChat MiniProgram Framework)是一种专门为微信小程序设计的开发框架,将 Angular 的技术栈与小程序的基础组件相结合,使得开发者可以更加方便地使用 Angular 框架开发
2023-08-09
java打包exe开源
Java打包EXE开源方法:使用Launch4j当你使用Java编程语言开发软件时,最终产物是一个JAR文件。对于有经验的Java开发人员来说,运行一个JAR文件是简单的。然而,对于那些不熟悉Java的人来说,一个EXE文件可能会更容易操作。如果你想将你的
2023-05-26
小程序开发工具详解视频
小程序是一种轻量级的应用程序,是由微信团队开发的一种开发模式。通过小程序,开发者可以在微信平台上快速开发出一个简单的应用程序。小程序的开发工具被称为小程序开发工具,是一种集成式的开发平台,它可以帮助开发者快速开发出一款小程序。小程序开发工具的原理非常简单,
2023-05-26
微信小程序开发工具怎么测试数据的
微信小程序开发工具支持在本地调试和发布小程序。在本地调试过程中,我们可能需要准备一些测试数据,以确保小程序的功能和界面正常运行。微信小程序开发工具内置了一个调试工具,可以模拟真实的用户操作环境。我们可以使用该工具快速构建测试数据,以检查小程序的稳定性和可靠
2023-05-26
微信小程序后端开发工具
微信小程序是一种基于微信平台的轻量级应用程序,它结合了微信在社交方面的优势以及应用程序的功能。微信小程序能够在微信主界面上展示,并且与微信内置的功能共同组成了一个应用生态系统。微信小程序后端开发工具是指在微信小程序开发过程中需要用到的一些后端开发工具,它们
2023-05-26