免费试用

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

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


相关知识:
阿里云小程序用哪种语言开发
阿里云小程序采用JavaScript语言进行开发。阿里云小程序是基于阿里云主机服务的一种快速开发微信小程序的工具,使用该工具可快速生成小程序项目,进行前端开发并进行部署。与其他小程序开发方式不同的是,阿里云小程序使用JavaScript语言进行开发,可以使
2023-08-09
安徽省亳州抖音小程序开发公司
抖音小程序是一种类似于微信小程序的轻量级应用,主要运行于抖音APP内,可以快速加载、充分利用抖音平台资源,提供更加丰富的生态场景和交互体验,为企业和商家提供更大的营销和推广空间。安徽省亳州抖音小程序开发公司,是一家专业致力于抖音小程序开发的企业,为客户提供
2023-08-09
安徽教育类小程序开发制作
随着移动互联网时代的到来,小程序成为了一种重要的移动互联网应用形式。小程序具有无需下载安装、快捷轻便、运作稳定、定制化强等特点,其小巧精致的大小,使其在教育领域中得以开发应用。安徽教育类小程序,主要面向安徽地区学生、家长、教师三个角色,提供丰富的教育信息和
2023-08-09
uniapp开发钉钉小程序遇到的坑
Uniapp作为一款跨端开发框架,可以快速地开发出小程序、APP以及H5等多端应用。而钉钉作为一款企业级的移动办公应用,钉钉小程序的开发也得到了大量的关注。在Uniapp开发钉钉小程序的过程中,我们遇到了一些坑点,接下来我会针对这些坑点进行详细介绍。1.
2023-08-09
pc微信小程序开发
PC微信小程序开发是指利用微信开发者工具和相关技术,开发适用于在电脑端微信中使用的小程序应用。本文将对PC微信小程序的基本原理和开发详细介绍。一、PC微信小程序的基本原理PC微信小程序是基于微信小程序原理的一种扩展应用,实现方式与移动端小程序类似。其基本原
2023-08-09
ios的小程序开发怎么样
iOS的小程序开发也被称为“轻应用”或“无需下载的应用程序”,它们是一种运行在iOS系统上的轻量级应用程序,用户不需要下载,可以通过Safari等移动浏览器来访问和使用。小程序通常具有简单的界面和基础功能,可提供与网站相似的服务。小程序的优势是它们不需要用
2023-08-09
intellijidea开发小程序
IntelliJ IDEA是一款由JetBrains公司开发的集成开发环境,支持Java、Kotlin、Groovy、Scala等多种语言开发。除此之外,IntelliJ IDEA还可用于开发桌面应用程序、Android应用程序、Web应用程序等。而对于小
2023-08-09
hishop微信小程序商城开发
Hishop是一种针对微信小程序商城开发的解决方案,它专门针对小商家开发。它的特点包括易于搭建和管理,提供完整的营销方案等等。下面我将为您介绍 Hishop微信小程序商城的开发原理和详细介绍。Hishop的开发原理:Hishop的开发是基于微信小程序开发框
2023-08-09
字节小程序开发工具不渲染页面怎么办
字节小程序开发工具是一种能够方便开发者进行小程序开发的辅助工具,其使用方便、功能强大,对开发的效率提升非常明显。然而,在使用字节小程序开发工具的过程中,有时会出现开发工具不渲染页面的问题,那么这个问题究竟是由什么引起的?该如何解决呢?首先,我们需要了解一下
2023-05-26
微信小程序开发工具反应太慢
微信小程序开发工具是由微信官方提供的一款用于开发小程序的集成开发环境。它提供了丰富的开发工具和便捷的开发调试体验,不仅可以提高小程序的开发效率,也能够极大地提升程序员的开发体验。但是有些开发者在使用微信小程序开发工具时出现了反应速度缓慢的情况,今天我将为大
2023-05-26
四川自助洗车小程序开发工具
随着人们生活水平不断提高,私家车已经成为城市居民生活中不可或缺的一部分。但是,每天洗车费用耗费大量金钱,对于一部分人来说,成为了一个负担。由此,自助洗车的概念应运而生。自助洗车是一种自助服务,它是利用一种智能设备,在洗车场内为用户提供一个简单、便捷的服务。
2023-05-26
河南餐饮外卖类小程序开发工具有哪些
随着城市化、快节奏生活的到来,餐饮外卖市场也愈发繁荣,成为了互联网经济中的一大亮点。很多餐饮企业都在积极参与这个市场,而小程序正是成为餐饮外卖的热门工具之一。那么,在河南餐饮外卖类小程序开发中,有哪些工具可以使用呢?接下来我们一一介绍。1. Wmpay 微
2023-05-22