免费试用

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

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


相关知识:
百度极速版小程序怎么开发的
百度极速版小程序是百度推出的一种轻量级应用程序,使用百度轻应用框架进行开发,具有体积小、加载快、无需下载安装等特点。下面我将详细介绍百度极速版小程序的开发原理及其详细过程。一、百度轻应用框架百度轻应用框架是基于Web前端技术实现的一种应用框架,通过HTML
2023-08-23
百度小程序开发用什么编程软件
百度小程序是一种基于移动端开发的应用程序,可通过百度搜索、百度 App、百度地图等多个入口进行访问。它与微信小程序、支付宝小程序等类似,都是一种轻量级的应用形态,可以直接在主流手机系统上运行,而无需用户下载安装。在百度小程序的开发中,主要需要用到以下几种编
2023-08-23
安徽汽车美容小程序开发制作有限公司怎么样
安徽汽车美容小程序开发制作有限公司是一家专注于为汽车美容行业打造小程序的公司。其主要业务包括小程序的设计、开发、部署和运营。小程序是一种基于微信平台开发的应用程序,它具有轻便、高效、易用的特点,可以在微信社交软件内部直接运行,无需下载和安装。由于微信拥有庞
2023-08-09
sw开发小程序
随着移动互联网的快速发展,小程序在市场中迅速崛起。小程序具备轻便、快捷、智能的特点,不仅能为企业和用户带来便利,也能为开发者带来机遇。本文将重点介绍如何开发一款基于SW(静态Web)技术的小程序。一、什么是SW技术SW技术是静态网页的简称,它不需要动态的服
2023-08-09
mpvue小程序开发教程pdf
MPVue是一款基于Vue.js开发的小程序开发框架,可以让开发者使用vue.js的语法来开发小程序。MPVue的出现使得小程序的开发变得更加简单、高效、灵活,极大地提高了开发效率。本文将介绍MPVue的原理以及详细讲解如何使用MPVue来开发小程序。一、
2023-08-09
微信小程序开发工具消息在
作为一种新兴的应用程序,微信小程序在社交媒体领域有着广泛的应用。微信小程序开发工具(以下简称“开发工具”)是开发者开发、调试和上线小程序的主要工具,它不仅提供了开发环境,还可以帮助开发者实现必要的测试和发布工作。本文将详细介绍微信小程序开发工具的消息实现原
2023-05-26
微信小程序开发工具无法找到入口
微信小程序是一种在微信平台上开发的小型应用程序。要进行微信小程序的开发,需要使用微信小程序开发工具,该工具可以帮助开发者在本地开发、调试和发布小程序。然而,有时候会发现微信小程序开发工具无法找到入口的问题,下面将介绍可能导致该问题出现的原因以及解决方法。可
2023-05-26
河东区小程序开发工具平台有哪些
在小程序的开发过程中,小程序开发工具平台扮演着非常重要的角色。目前市场上有很多小程序开发工具平台,其中河东区小程序开发工具平台也不少。下面就为大家介绍河东区小程序开发工具平台有哪些以及其原理和详细介绍。一、微信小程序开发工具微信小程序开发工具是微信提供的一
2023-05-22
百度小程序开发工具使用教程
百度小程序是一种基于百度智能云的轻量级应用,具有快速响应、跨平台、发布便捷等优点。下面介绍百度小程序开发工具的使用教程。一、开发环境搭建首先,在电脑上安装百度小程序开发工具,可以从百度小程序官网下载。安装完成后,打开开发工具,点击“新建小程序”即可创建一个
2023-05-22
爱奇艺微信小程序开发工具在哪
爱奇艺微信小程序开发工具是一款专门为微信小程序开发人员提供编写代码的工具。它是由爱奇艺开发的,旨在为开发者提供更快速、便捷、高效的开发平台,同时也满足业务需求和开发的需求。使用爱奇艺微信小程序开发工具可以帮助开发者快速制作自己的微信小程序,并提供多种调试和
2023-05-22
微信小程序网址链接
微信小程序是一种轻量级应用程序,可以在微信中直接使用,无需下载安装,提供了类似于原生应用程序的用户体验。微信小程序可以快速开发、部署、传播,用户可以通过微信搜索、扫描二维码、朋友圈等途径访问小程序。本文将详细介绍微信小程序的网址链接原理以及如何开发微信小程序。
2023-04-06
微信小程序打包
微信小程序是一种基于微信平台的应用程序,可以在微信中直接使用,无需下载安装,具有轻量、快速、便捷等特点。小程序的打包是指将小程序的代码、资源文件等打包成一个可执行的小程序包,以便上传到微信平台进行审核和发布。下面是微信小程序打包的原理和详细介绍。一、小程序
2023-04-06