免费试用

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

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
k歌小程序开发方案
K歌小程序是目前非常受欢迎的娱乐应用之一,可以让用户通过手机在家里玩唱歌,完成录制,剪辑,分享等步骤。接下来我们将详细介绍K歌小程序的开发方案。一、开发环境搭建1. 软件安装在开始开发K歌小程序前,需要在电脑上安装开发工具,推荐使用微信开发者工具,其它相关
2023-08-09
c语言可以开发微信小程序
C语言是一种高级编程语言,广泛应用于系统软件和应用软件的开发领域。对于微信小程序的开发来说,C语言并不是最常用的语言。微信小程序主要基于前端技术栈和后端技术栈来实现,前端主要使用JavaScript等语言,后端主要使用Node.js等语言。然而,在微信小程
2023-08-09
0基础学会小程序开发
随着互联网的快速发展,各种应用程序层出不穷,小程序也是其中的一个热门应用形式。小程序是一种轻量化的应用程序,无需安装即可直接使用,能够在微信、支付宝等社交平台中与用户进行交互,逐渐成为移动互联网应用的主流形式之一。本文将介绍基础知识让读者了解小程序的原理和
2023-08-09
小程序开发工具免费
小程序开发工具是一种可以用来开发微信小程序的软件工具。在开发小程序之前,需要先下载、安装并配置好相关的开发工具,才能够进行小程序开发。小程序开发工具的选择非常重要,因为不同的开发工具对于小程序的开发具有不同的功能和优点,可以根据自己的需求选择适合自己的开发
2023-05-26
微信小程序开发工具全新上线
微信小程序是一种在微信内部运行的应用程序,它不需要下载安装即可使用,具有轻量级和开发便捷的优点。微信小程序的开发工具是一种对开发者友好的IDE,提供了快速开发、调试和发布的环境, 可以对小程序进行一站式的开发管理,包含代码编写,代码预览,调试及发布等功能。
2023-05-26
微擎小程序安装开发工具
微擎是一款开源PHP框架,支持微信公众号、小程序、APP等平台的开发。微擎小程序开发工具是微信官方提供的小程序开发工具,可以在本地开发调试小程序,并且与微信小程序平台进行交互。下面将详细介绍微擎小程序开发工具的安装和使用。一、安装步骤1. 下载并安装Nod
2023-05-26
不适用微信开发工具发布小程序的原因
在发布小程序的过程中,可以使用微信开发工具来进行一些基本的开发工作,包括页面设计、调试和部署等。但是,在正式发布小程序时,微信官方并不建议直接使用微信开发工具进行发布,因为这样可能会影响小程序的稳定性和性能。下面将详细介绍为什么不适用微信开发工具发布小程序
2023-05-22
北京电商类小程序开发工具
在当前互联网时代,电商类小程序已经成为商家们必备的营销工具之一。随着人们购物方式的变化以及社交媒体的兴起,电商类小程序也越来越成为开发者们的热门选择。本文将详细介绍一种北京电商类小程序开发工具,并探讨其原理。介绍本文介绍的是“迈迪云开发平台”,是北京一家专
2023-05-22
百色博客小程序开发工具有哪些功能
百色博客小程序开发工具是一款专为开发者打造的小程序开发工具,旨在提供一种快速、高效、易用的开发环境,帮助开发者快速完成小程序开发和发布,拥有以下功能:1. 一站式开发环境百色博客小程序开发工具提供了一站式的开发环境,包括代码编辑器、调试工具、性能分析器等,
2023-05-22
mint小程序开发工具
Mint小程序开发工具是一种基于Vue.js的微信小程序开发工具,它能够帮助开发人员更快地构建小程序,同时提供了丰富的组件和API供开发人员使用。下面将详细介绍Mint小程序开发工具的原理以及使用方法。Mint小程序开发工具原理Mint小程序开发工具的底层
2023-05-22
vue项目打包小程序怎么做?
如果你想要使用vue项目打包小程序,你可以参考以下的步骤:1. 安装kbone或mpvue,这些是基于vue的小程序开发框架,可以让你使用vue语法和工具来开发小程序。2. 配置你的vue项目,根据你选择的框架的文档,修改你的webpack配置,添加小程序相关的插件和loader,以及修改你的入口文件和模板文件。
2023-04-06