免费试用

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

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


相关知识:
百度云服务小程序免费开发
百度云服务小程序是一种基于百度云平台的轻量级应用,可以在微信、百度、支付宝等平台上运行。它可以实现文件存储、数据加载、音视频播放等功能,非常适合开发文件管理、在线学习、音视频播放等类型的应用。下面我将详细介绍百度云服务小程序的开发原理。1.开发环境准备首先
2023-08-23
安新二级分销小程序开发
随着电商的发展,更多的人开始寻找不同渠道获取收入。二级分销模式能够让人们在电商平台上获得更多的利润。安新二级分销小程序就是一种能够提供这一功能的应用程序。下面我们就来详细介绍一下安新二级分销小程序的原理和开发流程。安新二级分销小程序的原理安新二级分销小程序
2023-08-09
安徽自助洗车小程序开发应用现状
随着智能手机用户的不断增多,小程序这种轻量化应用方式受到了越来越多的关注。自助洗车小程序就是其中一种非常实用的应用。自助洗车小程序可以帮助用户快捷便利地进行车辆清洗服务,同时降低成本,提供更好的用户体验。本文将基于安徽地区自助洗车服务的现状,介绍自助洗车小
2023-08-09
安徽拆线机小程序开发
随着网络技术的发展,移动互联网的普及,小程序成为了近年来最为热门的应用形式之一。安徽拆线机小程序是采用微信小程序开发技术,打造的一款能够轻松帮助用户拆开线路的工具类小程序,下面本文将为大家介绍安徽拆线机小程序的开发原理和详细介绍。一、小程序开发原理微信小程
2023-08-09
安徽微信听书小程序开发哪家好
微信听书小程序是基于微信公众号的服务,可以帮助用户在线收听各种有声读物,包括小说、诗歌、新闻、散文、讲座等等。微信听书小程序的开发需要专业的技术和团队,下面介绍几家安徽微信听书小程序开发公司。一、安徽锦方网络科技有限公司安徽锦方网络科技有限公司是一家专业的
2023-08-09
安庆在线教育平台小程序开发
安庆在线教育平台是一个专注于为学生提供在线学习资源的平台。随着移动互联网的发展,安庆在线教育平台更是推出了自己的小程序。本文将简要介绍安庆在线教育平台小程序的开发原理和详细过程。一、小程序开发原理小程序是一种新型的应用程序,它是在微信、支付宝等平台内运行的
2023-08-09
webapp开发与小程序资源
webapp开发与小程序是目前非常热门的两种应用开发方式,都可以在手机端运行,具有良好的交互性和易用性。本文将从原理和详细介绍两个方面对这两种应用进行探讨。一、webapp开发1.原理WebApp是一种基于Web技术开发的应用程序,其本质上就是一组基于网页
2023-08-09
qq小程序免费开发
QQ小程序是一种基于QQ内嵌浏览器和开发者工具实现的小程序,可以提供一些简单的应用和功能,如游戏、工具、生活、娱乐等方面。如果你是一个开发者,想要免费开发QQ小程序,本文将为你介绍QQ小程序的原理和详细的开发流程。一、QQ小程序开发原理QQ小程序就是基于H
2023-08-09
小程序开发工具注释怎么用的
小程序开发工具是一款提供小程序开发环境的软件,提供了一整套开发、调试、预览和发布的功能,让开发者可以快速高效地开发小程序。其中,注释是开发过程中非常重要的一部分,能够提高代码的可读性和可维护性。本文将介绍小程序开发工具注释的使用原理和详细介绍。一、注释是什
2023-05-26
小程序开发工具怎么发布文章
小程序是现在很多企业、个人都在使用的一种移动应用程序开发框架。小程序开发工具是一种方便开发者进行小程序开发的集成开发环境,可以对代码进行编辑、调试、上传等一系列操作。想要在小程序上发布一篇文章,需要进行以下步骤:第一步:创建小程序账号在使用小程序开发工具前
2023-05-26
微信小程序开发工具好用吗
微信小程序开发工具是一款由微信提供的跨平台开发工具,可用于快速开发微信小程序。它是一种基于 JavaScript 和 CSS 标准的 Web 开发技术,旨在让开发者减少学习成本,快速开发出小程序。微信小程序开发工具的优点:1. 简单易用:微信小程序开发工具
2023-05-26
带你了解微信小程序开发工具
微信小程序是一种新的应用形态,它可以不用下载安装,直接扫描二维码进入应用,类似于“云端应用”。它被称为"前途不可限量的"应用形态,已经成为移动互联网新的风口和重要方向之一。微信小程序开发工具是小程序开发者必备的工具之一,它为小程序开发者提供了一个完整的开发
2023-05-22