免费试用

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

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


相关知识:
阿图什小程序软件开发公司
阿图什小程序软件开发公司是一家专注于小程序开发的公司,成立于2016年,总部位于中国新疆维吾尔自治区的阿图什市。该公司的主要业务是为客户提供小程序的开发、设计、测试和发布服务,包括微信小程序、支付宝小程序、百度小程序等。阿图什小程序软件开发公司拥有一支专业
2023-08-09
安徽旅游小程序开发费用标准
随着移动互联网的发展和普及,旅游小程序成为了越来越多旅游企业借助互联网向用户推广自己的重要途径。对于旅游小程序的开发,费用因地区、需求量、团队规模等方面因素而异。本文将介绍安徽旅游小程序开发的费用标准。一、安徽旅游小程序开发的流程1. 需求分析:通过和客户
2023-08-09
安徽婚纱摄影小程序开发免费咨询
随着人们对于个性化、定制化服务的要求不断提高,婚纱摄影也逐渐从传统的实体店转向了线上平台,成为了一种新的消费模式。在婚纱摄影领域,小程序的普及和应用成为了一个新的趋势,安徽婚纱摄影小程序的开发也成为了很多婚纱摄影公司关注的焦点。所谓婚纱摄影小程序,就是一种
2023-08-09
qq小程序开发者工具下载
QQ小程序是一种轻量级的应用程序,它可以在QQ中直接打开,不需要下载和安装,具有简单、快捷、易用等特点。QQ小程序开发者工具是一款专门用于开发QQ小程序的工具。接下来,我将为大家介绍QQ小程序开发者工具的下载原理和详细介绍。一、QQ小程序开发者工具下载原理
2023-08-09
pc页面h5页面小程序前端开发
PC页面、H5页面和小程序都是前端开发中的常见应用,它们各自有着不同的特点和开发需求。下面分别对它们的开发原理进行详细介绍。PC页面前端开发PC页面主要是以桌面端浏览器为主要媒介的Web页面,其开发过程主要是利用HTML、CSS和JavaScript等技术
2023-08-09
cocos开发微信小程序怎么发布
Cocos Creator 是一款非常流行的游戏开发引擎,它支持生成微信小程序,并且可以通过微信开发者工具进行发布。在发布之前,我们需要完成如下步骤:1. 微信开发者工具安装在微信官方开发平台下载微信开发者工具(Windows/macOS/Linux)。2
2023-08-09
aliyun钉钉小程序开发简介
阿里云钉钉小程序,是阿里云和钉钉联合推出的一种小程序开发平台,适用于希望在钉钉上构建企业级应用的开发者和企业。在本文中,我们将介绍阿里云钉钉小程序的原理及详细介绍。一、原理阿里云钉钉小程序基于阿里云的PaaS(Platform as a Service)平
2023-08-09
java程序生成exe
标题:如何将Java程序生成EXE文件:原理与详细操作步骤导语:Java程序在跨平台方面具有很高的优势,但在部分情况下,我们需要将Java程序转换为Windows下可执行的EXE文件。在本文中,我们将详细探讨Java程序生成EXE的原理和步骤。1. 原理生
2023-05-26
idea 生成exe
在本教程中,我们将学习如何使用 IntelliJ IDEA 生成可执行的 EXE 文件。这对于打包和分发 Java 应用程序非常有用。我们将首先了解 EXE 文件的概念,然后学习如何使用 IntelliJ IDEA 创建可执行的 Java 应用程序,并最后
2023-05-26
html 生成 exe
在本教程中,我们将讨论如何将HTML应用程序转换为独立的可执行文件(.exe)。这可以使您的web应用程序轻松地在不需要浏览器或安装其他软件的情况下,在Windows操作系统上工作。为了实现这个目标,我们将使用一个名为NW.js(原名Node-Webkit
2023-05-26
小程序开发工具win10崩溃
小程序开发工具是一款基于微信公众号和小程序开发的集成开发环境,它能够为开发者提供便捷的代码编写、调试、预览和发布等功能,是小程序开发的必备工具。然而,很多开发者在使用小程序开发工具时可能会遇到一些问题,比如win10系统崩溃等问题,影响开发效率和体验。那么
2023-05-26
微信小程序开发工具介
微信小程序开发工具是一款基于微信公众号开发平台的开发工具,它支持开发者轻松创建符合微信开发规范的小程序。它同时支持代码编辑、测试和发布等功能,并且提供了丰富的 API 接口,包含用户信息、支付、数据存储等功能,开发者可以根据需求调用。整个微信小程序的开发流
2023-05-26