免费试用

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

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-09
uniapp开发淘宝小程序
Uniapp是一个基于Vue.js的开发框架,可以用于开发多端应用,包括H5、小程序、APP等。而淘宝小程序是基于阿里系的小程序平台,为淘宝商家提供了一个新的销售渠道。那么,如何使用Uniapp开发淘宝小程序呢?首先,我们需要了解Uniapp的基本结构和生
2023-08-09
react开发小程序
React是一种开源的JavaScript库,由Facebook贡献和维护,用于构建用户界面。React的主要特点是组件化开发和虚拟DOM,能够提高代码的可维护性和重用性。相信大家都很熟悉React的Web开发,但是React也可以被用于小程序的开发,这里
2023-08-09
pycharm能开发微信小程序
PyCharm是一款用于Python语言开发的集成开发环境,由JetBrains创建。虽然PyCharm主要是用来开发Python应用程序,但它也可以被用来开发其他语言的应用程序,包括JavaScript、CoffeeScript、TypeScript、H
2023-08-09
h5小程序开发费用
H5小程序是基于HTML5技术开发的小程序,因为无需下载APP,便于让用户直接使用,最适合轻量级、引流、广告等类型的产品,其开发费用相比传统APP来说更加低廉。下面我们来详细介绍H5小程序的开发费用。开发人员工资在H5小程序开发过程中,开发人员是关键之一。
2023-08-09
遵化小程序开发工具
遵化小程序开发工具是一款专门用于开发小程序的工具,它采用了类似于网页开发的技术,使用HTML、CSS、JavaScript等前端技术,开发者可以使用遵化小程序开发工具来编写小程序,并在微信等平台上实时查看效果。本文将对遵化小程序开发工具的原理和详细介绍作一
2023-05-26
小程序开发工具需要重新登录
作为小程序开发者,经常会遇到小程序开发工具需要重新登录的情况。这种情况对于开发者来说非常困扰,因为开发工具会清空本地缓存,导致之前完成的工作需要重新开始,更加严重的情况会导致代码丢失,影响开发进度和质量。要理解小程序开发工具需要重新登录的原理,需要先了解小
2023-05-26
微信小程序模板定制开发工具有哪些
微信小程序是一种轻量级的应用程序,在功能和使用性上,小程序和APP有很多相似之处。不同之处在于,小程序不需要下载和安装,可以直接在微信内使用。目前,微信小程序已经成为一个非常热门的领域,许多企业和开发者都把其作为重要的营销和服务工具。为了满足不同需求的开发
2023-05-26
微信小程序开发工具中文乱码
微信小程序开发工具是一种用于创建和管理微信小程序的软件工具。它是一种非常方便和易于使用的开发工具,可以帮助开发人员在短时间内创建出功能强大的微信小程序。然而,有时候在使用微信小程序开发工具的过程中,会发现中文出现了乱码的情况,这可能会对开发工作造成不良的影
2023-05-26
好用的微信小程序开发工具
微信小程序是一种开发平台,是在微信内部运行的小型应用程序,不需要安装就可以使用。这一新兴的开发领域,已经吸引了越来越多的程序员和开发者的注意。但是,如果没有好用的微信小程序开发工具,想要开发出优秀的小程序可不是件容易的事情。好用的微信小程序开发工具至少需要
2023-05-22
抖音小程序游戏开发工具有哪些功能
抖音小程序游戏开发工具主要由抖音小程序开发平台和微信开发者工具两个部分组成,它们共同为游戏开发者提供了一系列工具和技术支持来开发和测试抖音小程序游戏。首先,抖音小程序开发平台提供了一个开发环境,其中包含了开发者所需的代码编辑器、调试器和命令行工具等。在这个
2023-05-22
安徽生鲜小程序开发工具怎么样
安徽生鲜小程序开发工具是一款基于微信小程序开发平台的应用开发工具。它是为安徽电子商务产业发展量身定制的一款小程序开发工具,主要用于电商行业中生鲜类产品的销售。现代商业最核心的受众群体是年轻人,他们对于快速、高效的购物方式越来越感兴趣,因此小程序应运而生。小
2023-05-22