免费试用

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

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小程序的原理百度app小程序的核心原理是通过在手机百度APP中运行一
2023-08-23
阿里巴巴诚信通小程序开发
阿里巴巴诚信通小程序是一个基于阿里巴巴国际站平台的B2B电子商务服务平台,提供供应商和买家之间的在线交流和交易。该小程序主要包含供应商库存管理、询价管理、订单管理、物流管理、财务管理等功能模块,旨在为中小企业提供一种简单、快捷、高效的供应链管理方式,增强供
2023-08-09
安徽试验机小程序开发
安徽试验机小程序是一种基于微信平台的应用程序,可以为用户提供实时测试数据、远程控制试验机器人等功能。本文将介绍安徽试验机小程序的开发原理和实现方法。一、小程序开发原理安徽试验机小程序是基于微信小程序开发的,而微信小程序是一种基于微信平台的轻量级应用。微信小
2023-08-09
安平小程序开发
安平小程序是在微信公众平台上推出的一种应用程序,它可以在微信内部运行,不需要下载安装即可使用,并且用户可以通过微信扫描二维码等方式快速进入小程序。小程序与网页应用类似,都是基于HTML5实现的,但小程序有更好的用户体验、更低的使用门槛和更强的数据交互能力,
2023-08-09
wpf程序开发方法小总结
作为一种功能强大且易于使用的桌面应用程序框架,WPF(Windows Presentation Foundation)为开发人员提供了许多优势,如更好的图形体验、更强的数据绑定和更灵活的布局方式等。在本文中,我们将介绍 wpf 程序开发的基本方法和原理。一
2023-08-09
java可以生成exe文件吗
Java 程序通常编译为跨平台的字节码(.class 文件),此字节码可以在任何具有 Java 虚拟机(JVM)的设备和操作系统上运行。尽管 Java 本身并不直接生成 exe 文件,但可以通过第三方工具或者使用 JDK 中的本地编译器(如 jlink 和
2023-05-26
原生小程序用哪个开发工具
原生小程序是指在微信客户端内部运行的小程序,其开发涉及到一些技术栈和开发工具的选择。目前,适用于原生小程序开发的主要工具包括微信开发者工具、HBuilderX等。微信开发者工具是一个官方提供的集成小程序开发调试、上传、发布等功能于一体的开发工具。它可以直接
2023-05-26
微信小程序开发工具打不出汉字
微信小程序作为一款流行的开发工具,在实际开发中有可能会遇到打不出汉字的问题,这是因为在开发中可能出现了编码问题,下面我们来详细介绍一下打不出汉字的原理和解决方法。1. 原因分析微信小程序开发工具中无法打出汉字,主要是因为出现了编码问题。在计算机中,汉字和其
2023-05-26
软件小程序开发工具
软件小程序是一种类似于移动应用的轻量级应用程序,可在各种设备上运行,如手机、平板电脑和笔记本电脑等。在过去的几年中,软件小程序的受欢迎度不断增加,尤其是在中国,其中微信小程序成为了一个最受欢迎的小程序平台。在本篇文章中,我们将详细介绍软件小程序开发工具或原
2023-05-26
江门提供微信小程序开发工具
微信小程序是一种轻量级应用,可以在微信平台上运行,无需下载、安装和卸载即可使用,是一种很受欢迎的小程序。而江门提供的微信小程序开发工具就是一款可以帮助开发者开发微信小程序的工具,下面详细介绍一下江门提供的微信小程序开发工具。一、江门提供的微信小程序开发工具
2023-05-26
微信小程序网页
微信小程序是一种轻量级的应用程序,可以在微信内部直接运行,无需下载安装。它是一种基于微信开发者工具和微信公众平台的开发模式,开发者可以使用 HTML、CSS、JavaScript 等技术进行开发。微信小程序网页则是指在微信小程序中使用 webview 组件
2023-04-06