免费试用

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

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


相关知识:
vue 开发百度小程序
Vue 开发百度小程序,是指使用 Vue 框架开发适用于百度小程序的应用程序。在本文中,我将为你介绍开发百度小程序的原理和详细步骤。首先,让我们来了解一下百度小程序的基本架构和特点。百度小程序是一种类似于微信小程序的轻量级应用程序,它可以在百度的生态环境中
2023-08-23
阿图什小程序开发工具
阿图什小程序开发工具是一款可以帮助开发者快速创建和管理小程序的工具。它基于微信小程序开发框架进行开发,因此可以轻松地创建高质量和高性能的小程序。阿图什小程序开发工具提供了易于理解的界面和工作流程,使得即使没有编程经验的用户也可以使用它创建小程序。它还具有许
2023-08-09
uniapp开发小程序顶部栏
Uniapp是一个支持多端开发的框架,可以基于一套代码同时开发小程序、H5、App等多端应用。在Uniapp中,顶部栏是小程序页面中重要的组成部分之一,它可以包含页面标题、返回按钮、菜单按钮等。接下来,我将对Uniapp中顶部栏的实现原理和详细介绍进行说明
2023-08-09
python开发微信小程序难吗
Python 是一种高级语言,具有高度的可读性和可维护性,并且非常适合快速开发。另一方面,微信小程序是一个相对较新的技术,具有大量的用户,并且被广泛使用。由于这两种技术都非常流行,因此成为一个 Python 开发微信小程序的热门话题。那么,Python 开
2023-08-09
b2b商城小程序开发
随着移动互联网技术的发展,越来越多的企业开始对小程序进行关注和研发。B2B商城小程序也是其中之一。那么,什么是B2B商城小程序呢?B2B商城小程序是一款基于微信或其他主流社交媒体平台,为企业或个人提供产品、供应链,买卖交易等平台服务。B2B商城小程序可供企
2023-08-09
andrpod 微信小程序开发
Android 微信小程序是在微信公众平台上进行开发的轻量级应用程序。它可以在没有完成应用程序的情况下快速构建手机应用程序。因此,Android 微信小程序越来越受到开发者的青睐。本文将向您介绍 Android 微信小程序开发的详细信息和原理。1. 微信小
2023-08-09
长春小程序开发工具公司品牌过硬
长春是一座科技创新的城市,也是中国数字经济和互联网发展的热门城市。近年来,随着移动互联网的飞速发展,小程序逐渐成为互联网行业重要的一环。长春小程序开发工具公司是一家专业从事小程序开发和设计的公司,公司拥有高素质的团队和技术支持,品牌过硬。一、技术实力强长春
2023-05-26
小程序开发工具腾讯
小程序开发工具是腾讯开发的一款基于微信公众平台的小程序开发 IDE 软件。小程序开发工具的主要功能包括项目创建、源代码管理、模拟器预览、调试工具等。小程序开发工具旨在为开发者提供快速、高效的开发环境,便于开发者进行微信小程序的开发和管理。本文将详细介绍小程
2023-05-26
小程序开发工具自动刷新控制台
小程序开发工具自动刷新控制台是一项非常实用的功能,它可以自动将小程序代码的修改更新到开发工具中的控制台中,方便程序员快速地查看程序的运行结果。下面我们来介绍一下这项功能的原理和详细的使用方法。一、原理小程序开发工具采用了一种基于 WebSocket 的实时
2023-05-26
微信小程序开发工具没有云开发
微信小程序作为一种轻量级应用,其开发工具也是极其重要的一环。在小程序开发工具中,云开发成为了非常受欢迎的功能之一。但是,在微信小程序开发工具的早期版本中,是没有云开发功能的。接下来,本文会从原理和详细介绍两个方面来解析为什么早期版本的微信小程序开发工具中没
2023-05-26
可视化小程序开发工具免费
可视化小程序开发工具是一种无需编写代码的小程序开发工具,它通过可视化界面来实现小程序的设计和开发,使得不需要专业编程知识的用户也能轻松地创建自己的小程序。下面我将为大家介绍一款免费的可视化小程序开发工具——“微信小程序开发者工具”。微信小程序开发者工具是一
2023-05-26
河北代驾小程序开发工具
随着共享经济的不断发展,代驾服务已经成为了市场上一个特别受欢迎的服务。与此同时,随着小程序的发展,越来越多的企业将自己的业务移植到了小程序中。因此,开发一款代驾小程序成为了颇具发展潜力的市场。一、代驾小程序的背景随着市场的发展,人们的交通工具不断更新,但是
2023-05-22