免费试用

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

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
阿里巴巴怎么安装小程序安装开发工具包
阿里巴巴小程序(Alibaba Mini Program)是一款基于阿里云等服务平台的小程序开发工具包,为用户提供了一种全新的开发方式与解决方法。通过安装小程序开发工具包,用户可以快速、方便地创建、编辑、调试和发布阿里巴巴小程序。本文将详细介绍阿里巴巴小程
2023-08-09
安徽生鲜小程序开发方案
随着移动互联网的普及,越来越多的消费者开始利用手机购物和点餐。因此,许多的生鲜超市也开始开发自己的手机应用程序,用以提供线上线下的服务。在这篇文章中,我们将会讨论生鲜小程序的开发方案。小程序是指面向微信用户的一种轻量化应用程序,其优点在于不需要下载和安装,
2023-08-09
安徽全平台小程序开发招聘
随着移动互联网的发展,越来越多的企业开始关注小程序这一领域。小程序是一种轻量级应用,用户可以通过微信、支付宝等社交平台进行访问和使用,无需下载安装。而安徽全平台小程序开发就是一种基于此的开发技术。安徽全平台小程序开发基本原理是基于微信小程序开发框架,使用H
2023-08-09
we码小程序用什么语言开发
we码小程序是一种类似于App的小程序,用户可以直接在微信中使用,不需要下载和安装。使用we码小程序可以实现一些简单的功能,比如查看天气、购物、点菜等。we码小程序是用什么语言开发的呢?本文将介绍we码小程序的开发原理和使用的语言。we码小程序的开发原理w
2023-08-09
vue 微信小程序开发
Vue 微信小程序开发是一种将 Vue.js 框架应用于微信小程序开发的技术,为了更好的了解Vue 微信小程序开发,需要对两个部分进行了解:Vue.js 和微信小程序### 什么是 Vue.js?Vue.js是一种渐进式的 JavaScript 框架,可以
2023-08-09
vscode开发和调试微信小程序
Visual Studio Code是一个强大的代码编辑器,它在开发微信小程序方面也有着非常出色的表现。本文将详细介绍如何使用VS Code来进行微信小程序的开发和调试。### 原理首先,我们需要理解微信小程序的基本原理。微信小程序需要运行在微信客户端中,
2023-08-09
python小程序开发入门
Python作为一种强大而流行的编程语言,在近年来的数据分析、机器学习、人工智能等领域得到了广泛应用。除此之外,Python还具有很好的可扩展性和易于上手等优点,使得越来越多的人开始学习Python语言。本篇文章将介绍Python小程序的开发入门原理以及相
2023-08-09
ktv如何开发小程序
KTV作为一个音乐娱乐场所,对于提高用户体验和管理效率来说,借助现代化的技术手段也逐渐成为一种趋势。小程序作为一个轻量级的移动端应用,在那些只需要轻量级服务的场景下很有优势,因此KTV也可以考虑开发一个小程序来满足用户的需求。下面我将为大家介绍KTV开发小
2023-08-09
go开发头条小程序
Go是一种开源的编程语言,它的设计目的是为了解决大规模软件开发的实际问题。随着互联网的发展,Go的应用越来越广泛,包括基于微服务的Web应用程序、大型分布式系统等。而今天,我们将介绍如何用Go开发头条小程序。### 头条小程序介绍头条小程序是今日头条推出的
2023-08-09
通用小程序开发工具下载
通用小程序开发工具是一款用于开发小程序的集成开发环境工具,可以方便地进行代码编写、调试、打包等操作。本文将介绍通用小程序开发工具的下载和使用方法,以及其原理和功能特点。一、通用小程序开发工具的下载通用小程序开发工具是一款免费的开发工具,可以在官方网站上进行
2023-05-26
广州一个微信小程序开发工具
微信小程序已经成为很多企业和个人开发者的首选开发平台,特别是在广州,小程序应用非常流行和普及。如果你也想开发微信小程序,可以使用广州的各种微信小程序开发工具。本篇文章将介绍一个在广州的微信小程序开发工具:Uniapp。Uniapp是一种基于Vue.js框架
2023-05-22