免费试用

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

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 智能小程序是一种轻量级的应用开发模式,旨在提供便捷、高效的开发方式,帮助开发者快速构建和发布小程序。下面我将详细介绍百度 App 智能小程序的使用原理和开发流程。一、概述及原理介绍:百度 App 智能小程序是基于百度 App 内嵌的一种应用开
2023-08-23
阿里巴巴实体店小程序开发流程
阿里巴巴实体店小程序是基于支付宝小程序架构的一种应用,它提供了线上购买、预约、查询门店信息等功能,方便消费者在线上和线下进行购买。下面将详细介绍阿里巴巴实体店小程序的开发流程。1. 注册小程序账号首先需要在支付宝开放平台注册一个小程序账号,同时需要进行实名
2023-08-09
web开发struts2小程序
Struts2是一个基于MVC框架的Web应用程序开发框架。Struts2框架采用前端控制器模式和拦截器过滤器结构,使得应用程序程序的代码易于管理和维护。本篇文章将介绍如何使用Struts2框架来构建一个简单的Web应用程序。一、Struts2框架的工作原
2023-08-09
v5shop小程序开发好不好呢
v5shop是一款基于微信小程序的电商平台,可用于搭建各种类型的电商小程序,如购物小程序、租赁小程序、团购小程序等等。v5shop在小程序开发中具有较高的效率,同时也具有优秀的性能和易用性,因此,它是一个非常好的选择。一、v5shop的架构v5shop的结
2023-08-09
php可以开发微信小程序
微信小程序是一款基于微信平台的应用程序,可以通过微信搜索、扫码进入和分享等入口进入。相比于传统的app,微信小程序具有更轻便、更快捷、更智能的优势,并且不需要用户下载安装,用户可以直接使用,因此深受用户喜爱。那么,php可以对微信小程序进行开发吗?答案是肯
2023-08-09
php做微信小程序后端开发
微信小程序是一种基于微信平台的小型应用程序,采用类似于Web开发的技术栈,通过微信开发者工具完成开发、调试和发布。由于微信小程序在门槛、安全、推广等方面具有较大的优势,因此深受开发者和用户的关注。PHP是一种常用的后端语言,在微信小程序开发中也可以作为后端
2023-08-09
java开发一个小程序
Java是一种广泛应用的高级编程语言,与C和C ++相比,它具有更强的跨平台性和安全性。在互联网领域,Java是最常用的编程语言之一,用于开发各种应用程序和平台。在本文中,我们将介绍如何使用Java编写一个简单的小程序。小程序是指轻量级的应用程序,适用于移
2023-08-09
bat小程序怎么开发
一、bat文件的概述BAT是batch file的缩写,即批处理文件。批处理文件是一种以批量方式运行的指令集文件,通常以.bat或.cmd为扩展名。通俗点说,BAT文件就是一系列DOS命令的集合,可以用来自动执行某些操作,是批量处理任务的神器。二、bat文
2023-08-09
微信小程序开发工具中调试器功能
微信小程序是一种在微信内部运行的应用程序,我们可以使用微信小程序开发工具进行开发调试。微信小程序开发工具中,调试器功能是十分重要的一个功能,它可以帮助我们在开发过程中定位各种问题并进行调试。本文将对微信小程序开发工具中的调试器功能进行一些原理和详细介绍。一
2023-05-26
微信小程序开发工具ios
微信小程序开发工具ios是一款适用于iOS操作系统的开发工具,主要用于开发微信小程序。在iOS系统中,开发者可以通过该工具进行小程序的开发、调试和发布等一系列操作。微信小程序开发工具ios的原理主要是基于微信应用程序接口(API)和微信开放平台。开发者可以
2023-05-26
苹果手机微信小程序开发工具
苹果手机微信小程序开发工具是一款专门用于开发微信小程序的软件,旨在帮助开发者快速、高效地开发和部署微信小程序。以下是对该工具的原理和详细介绍。1. 原理苹果手机微信小程序开发工具原理主要基于微信小程序运行原理和苹果手机操作系统的特性。微信小程序运行在微信客
2023-05-26