免费试用

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

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
vm商城小程序开发
VM商城小程序是一种小型电商平台,利用微信小程序作为载体,向用户展示商品及其信息,实现在线购物。VM商城小程序可以定制开发,根据客户需求开发出与众不同的电商平台,提供更好的用户体验和更便捷的购物方式。VM商城小程序的工作原理是基于微信小程序框架进行开发。在
2023-08-09
thinkphp小程序开发实例
Thinkphp是目前比较流行的PHP开源框架,用于快速地开发Web应用程序。而小程序则是一种非常流行的移动应用程序形式,可以在微信等社交平台上运行。在这篇文章中,我们将介绍如何使用Thinkphp来进行小程序开发,让你可以迅速地构建出自己的小程序。一、小
2023-08-09
spring开发小程序
Spring是Java EE应用程序开发框架,它主要用于快速构建Web应用程序和微服务,同时也提供了诸如数据访问、安全、事务等领域的解决方案。小程序是一种轻量级的应用程序,常见于移动设备上,具有低耗能、易于开发等特点,因此在近年来备受关注。本文将介绍Spr
2023-08-09
html开发小程序
HTML5是一种用于网页和移动应用程序开发的标记语言。它不仅可以用于创建网页,还适用于开发移动应用程序和小程序。开发小程序需要一些基本的HTML5语言知识和技能。在本篇文章中,我将讨论HTML5应用程序开发的基本原理并提供一些详细的介绍。HTML(超文本标
2023-08-09
hr系统小程序开发费用
HR系统是企业人力资源管理的重要平台之一,在企业内部广泛应用。随着移动互联网的普及,HR系统也开始涌现出各种基于移动端的小程序版本。毫无疑问,HR系统小程序的开发成本会比传统的Web版HR系统更为经济实惠,而且使用更方便灵活。本文将介绍HR系统小程序的开发
2023-08-09
django开发小程序api
Django 是一个综合性的 Python 网页开发框架,它使得开发者可以更加高效地创建基于 Web 的应用,同时 Django 对于小程序的 API 开发也有着广泛的应用。在本篇文章中,我们将详细介绍如何使用 Django 框架进行小程序 API 的开发
2023-08-09
cms后台开发微信小程序
随着移动互联网的快速发展,微信已经成为了人们生活中必不可少的一部分。很多公司和组织都希望通过微信小程序来实现更多的业务需求,其中就包括使用CMS后台开发微信小程序。本文将就此问题作出一些详细的介绍和解释。首先,我们需要了解一些基本概念。CMS(Conten
2023-08-09
html5封装exe教学
在本教程中,我们将讨论如何将一个HTML5网页应用封装到一个独立的exe文件中。这通常会带来几个优势,例如方便地在不同的设备上运行、与操作系统更自然地集成以及增加自定义的功能。原理:将HTML5应用封装成exe最主要的原理是将HTML,JavaScript
2023-05-26
微信小程序开发工具1
微信小程序是指运行在微信客户端内的应用程序,由于小程序无需下载安装,使用也很方便,因此受到越来越多开发者和用户的热爱。而微信小程序开发工具则是开发小程序的利器,能够帮助开发者快速开发出小程序。微信小程序开发工具1.05是一款基于原生技术开发的开发工具,其主
2023-05-26
两种微信小程序开发工具使用教程
微信小程序是一种轻量级的应用程序,可以在微信中直接运行,用户不需要安装即可使用。小程序开发工具是开发微信小程序所必须的,目前主要有两种:微信小程序开发者工具和VS Code插件:wepy-cli。本文将对两种开发工具进行介绍和使用教程。一、微信小程序开发者
2023-05-26
电脑端小程序开发工具
电脑端小程序开发工具,是指通过使用一定的编程技术,针对现有的小程序平台,开发出适用于电脑端的小程序,为用户提供更加高效、便捷的使用体验。目前,市面上比较流行的电脑端小程序开发工具主要有几种,比如可视化开发平台、集成开发环境(IDE)等等。可视化开发平台,是
2023-05-22