免费试用

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

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
安宁商城小程序开发
安宁商城小程序是基于微信小程序开发平台构建起来的一个商城应用。这个应用充分利用了小程序的功能,实现了商城的主要功能,包括产品展示、购物车、订单管理、支付等,为用户提供了完整的商城购物体验。本文将详细介绍安宁商城小程序的开发原理和流程。一、微信小程序介绍微信
2023-08-09
o2o小程序开发需要多少钱呢
随着移动互联网的普及,O2O(Online To Offline)成为了一个热门的词语。O2O小程序是指一种基于微信、支付宝等即时通讯软件平台的线上到线下模式,通过在线预订服务,再通过实体门店进行服务交付的技术解决方案。它通过整合用户的需求、企业的服务以及
2023-08-09
ktv商家开发小程序有什么用
KTv商家开发小程序是一项非常重要的任务。随着以互联网为中心的商业模式的兴起,越来越多的公司采取了开发小程序的方式来加强自己的竞争力。通过开发小程序,可以帮助ktv商家更有效地进行营销和管理,并为客户提供更好的用户体验。首先,小程序的原理是非常简单的。小程
2023-08-09
ios开发写微信小程序用什么框架呢
在iOS中,开发微信小程序可以使用两种不同的框架:WePY和Taro。WePY是一种基于Vue.js的小程序开发框架,它使用了类似于Vue.js的语法和功能,包含了组件化、单向数据流、事件机制等特性。WePY提供了丰富的API和插件,允许开发者使用自己熟悉
2023-08-09
app软件小程序开发代码大全
App软件和小程序开发已经成为现代互联网行业中最为重要的领域,也是最具有前景的行业之一。在这个领域,程序代码的编写是至关重要的,本文将为您介绍一些关于app软件和小程序开发代码的基本知识,帮助您更好地理解这一领域。1. App软件的开发App软件开发可以分
2023-08-09
0基础学开发小程序商城
小程序商城是一种基于微信生态的电子商务应用程序。相比于传统的电商平台,小程序商城更轻便、简单、易上手,无需下载APP,只需在微信中搜索即可打开使用。对于刚入门学习开发的人员来说,学习如何开发一个小程序商城是一项不错的选择。在这里,我们将带您详细了解开发小程
2023-08-09
java如何生成exe程序
Java 生成 EXE 程序主要依赖于将 Java 应用程序打包成可执行文件,这样用户可以直接运行该可执行文件,而不需要额外的 Java 运行环境。我们将分为以下几个步骤详细介绍如何生成 EXE 程序。## 1. 准备工作首先,确保你有以下环境和工具:1.
2023-05-26
hbuilder生成exe
HBuilder是一款高效的HTML5跨平台开发工具,由国内开发公司DCloud研发。通过HBuilder,您可以将HTML5应用程序发布到不同的平台(如Windows、Mac、Android、iOS等),而EXE文件是Windows平台的可执行程序。目前
2023-05-26
flash打包exe无法播放
Flash 打包成 EXE 无法播放的问题解析众所周知,Adobe Flash 是一种多媒体制作平台,可以为网站、动画、游戏等创建出色的视觉效果。虽然 Flash 已经逐渐被 HTML5 取代,但有时我们仍然希望将 FLA 文件转换为独立运行的 EXE(可
2023-05-26
简单的小游戏小程序开发工具
小程序是近年来崛起的一种轻量级应用程序,其与传统的App相比,不需要用户下载安装,可以直接在微信、支付宝等社交平台中使用。小程序因其轻便、易用、快速等特点,被越来越多的开发者和企业所采用。在小程序中,开发一款简单的小游戏可以为用户增加娱乐性体验,也是开发小
2023-05-26
小程序cps是什么意思?
小程序CPS是指通过推广小程序产品,达成一定的转化后获得佣金的一种推广方式。以下是小程序CPS的原理和详细介绍。
2023-04-06