免费试用

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

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


相关知识:
百度app小程序开发
百度app小程序是百度公司推出的一种轻量级应用形态,它可以在手机百度APP中直接运行,为用户提供丰富的服务和功能。在本文中,我将为您介绍百度app小程序的原理和详细开发步骤。一、百度app小程序的原理百度app小程序的核心原理是通过在手机百度APP中运行一
2023-08-23
安徽直播类小程序开发平台官网
安徽直播类小程序开发平台官网是一个专门为企业和个人提供直播相关服务的在线平台。通过这个平台,用户可以方便快捷地创建自己的直播频道,分享自己的生活、看法和技能,并与观众互动交流。该平台提供多种直播工具和功能,包括直播间搭建、观众管理、礼物打赏、推广营销等,可
2023-08-09
安徽旅游小程序开发外包公司招聘
随着移动互联网的不断普及,旅游行业也迎来了全新的发展机遇。安徽旅游小程序应运而生,成为旅游企业在移动端开展业务的重要工具。安徽旅游小程序开发外包公司是一种针对旅游企业的服务型企业,通过提供安徽旅游小程序的开发、设计和维护等服务,助力旅游企业在移动端拓展业务
2023-08-09
安徽k歌小程序开发多少钱
K歌小程序是一款集唱歌、录音、发布等功能于一身的应用程序。在K歌小程序中,用户可以选择自己喜欢的歌曲进行演唱,并可以录制自己的声音,再上传到平台上与其他人分享。近年来,随着移动互联网普及程度的不断提升,K歌小程序也越来越受欢迎。那么,安徽K歌小程序开发需要
2023-08-09
saas小程序怎么开发
SaaS小程序是指Software as a Service(软件即服务)的小程序。小程序作为一种轻量级的应用程序,逐渐成为了人们日常生活中不可或缺的工具。由此,SaaS小程序的开发成为了不少企业和开发者所追逐的方向。SaaS小程序的开发原理基本上和普通小
2023-08-09
java开发小程序功能
Java是一种面向对象的编程语言,可以为开发者提供很多基础库,可以用来编写各种类型的小程序。下面就介绍一些Java开发小程序常用的功能。1. GUI界面Java 提供了一个面向对象的图形用户界面(GUI)框架,称为Swing。Swing 包含了大量的 GU
2023-08-09
iot小程序开发集成方案
随着互联网的发展,物联网技术越来越成为了人们生活和工作中的必需品。物联网技术不仅可以实现设备之间的互联互通,还可以实现设备与人之间的互联互通。小程序是一种移动端应用程序,可以在微信、支付宝、百度等平台上运行,能够满足用户的多种需求,也很适合物联网应用场景,
2023-08-09
cocos 开发微信小程序
Cocos Creator 是一个基于 JavaScript 的完整游戏开发工具,支持多平台输出,包括 Web、iOS、Android、微信等。微信小程序是一款在微信生态系统下的应用程序,它可以在微信中运行,而不必安装到用户的手机上。本文将介绍怎样使用 C
2023-08-09
微信小程序开发工具里模拟器的作用
微信小程序开发工具是开发微信小程序的必备工具之一。其中,模拟器是非常重要的一个部分。模拟器的作用是在开发过程中快速预览小程序的效果,查看小程序在不同尺寸、设备、网络下的兼容性和表现情况。本文将介绍微信小程序开发工具里模拟器的详细作用原理。1. 模拟器的作用
2023-05-26
微信小程序官方开发工具叫什么名称来着
微信小程序官方开发工具名称为“微信开发者工具”,是一款用于微信小程序开发的集成开发环境(IDE)。该工具提供了一系列的工具和模拟器,使得小程序开发变得更加容易和高效。微信开发者工具主要有以下三个功能模块:1. 代码编辑器微信开发者工具内置了一款高效的代码编
2023-05-26
平凉微信小程序开发工具招聘
作为一个城市的经济、科技和文化的发展趋势,互联网已经深入到我们的生活之中,微信小程序作为一种新的、高效的互联网应用形式,日渐受到人们的青睐。小程序不需要安装即可使用,不仅提高了用户的使用体验,也为企业带来了更多的商机和营销空间。因此,微信小程序的开发工具也
2023-05-26
湖北代驾小程序开发工具
湖北代驾小程序是一款基于微信小程序的代驾服务平台,为用户提供线上预约、下单、支付等服务。开发该小程序需要掌握一定的技术和工具,下面将详细介绍。1. 技术栈湖北代驾小程序使用的技术栈主要包括前端语言HTML、CSS、JavaScript,框架Vue.js和小
2023-05-22