免费试用

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

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内部或者百度智能小程序平台上运行。百度小程序的开发需要一些工具软件来支持,下面我将为你介绍一些常用的百度小程序开发工具软件及其原理。1. 百度开发者工具:百度开发者工具是官方提供的一款使用
2023-08-23
安徽小程序商城开发公司排名
安徽小程序商城开发公司排名涉及多个因素,包括技术实力、服务质量、价格水平、客户口碑等。以下是我对它们的介绍。一、技术实力安徽小程序商城开发公司的技术实力是判断其优劣的重要指标。技术实力包括技术团队的专业能力、技术方案的创新程度、研发能力、代码质量等等。我们
2023-08-09
xx小程序开发合同
小程序开发合同是指开发人员和小程序发起人之间签订的一份合同,其中规定了双方的权利和责任,明确了开发的工作范围、时间要求、工作成果、技术支持等内容。以下将详细介绍小程序开发合同的原理和内容。1. 原理小程序开发合同是一份法律文件,在双方签订后约束双方的权利和
2023-08-09
uniapp小程序开发时如何登录
Uniapp是一款开发跨平台应用的工具,它可以让开发者在一次开发的过程中,应用可以在不同平台上运行,包括iOS、Android、H5、小程序等。其中,小程序是目前移动互联网应用中使用非常广泛的开发方式之一,它的使用也需要考虑到用户的登录问题。本文将从Uni
2023-08-09
uniapp云开发小程序激励视频广告
Uniapp云开发小程序激励视频广告是一种有效的广告形式,在小程序中非常受欢迎。它的运作原理与其他平台类似,但是最大的不同在于它是基于Uniapp框架和云开发平台实现的。激励视频广告是一种能够提供给用户额外奖励的广告形式。当用户在游戏或应用中达到某个目标时
2023-08-09
springboot小程序开发免费
Spring Boot 是基于 Spring 框架的快速开发框架,其主要特点是简单易用、快速开发、约定优于配置,可以快速地搭建一个 Web 项目的基础框架。本文将介绍如何使用 Spring Boot 框架进行小程序开发,并且提供完整的代码。1. 开发环境搭
2023-08-09
phpcms开发小程序插件
phpcms是一套非常优秀的CMS系统,是广大开发者开发web应用程序的重要工具。为了满足用户的需要,在pcmcms中也可以进行小程序的开发。小程序作为一种新型的应用程序,呈献人们不同于web应用的使用体验。它与web应用最大区别在于,不需要安装即可使用,
2023-08-09
java微信小程序支付功能开发
Java 微信小程序支付是指在微信小程序集成支付功能,通过微信支付完成交易的过程。在 Java 开发中,要完成微信小程序支付功能,一般需要完成以下步骤:1. 获取微信支付的 API 密钥API 密钥是用于微信支付的认证和安全措施的。获取 API 密钥可以在
2023-08-09
java程序生成exe文件
在本文中,我们将介绍如何将Java程序生成为可执行的EXE格式文件。这样,您的Java程序可以更轻松地在Windows操作系统上运行。我们将首先了解生成EXE文件的基本原理,然后通过详细的操作步骤和工具进行介绍。原理:Java程序通常是跨平台的,可以在任何
2023-05-26
微信小程序开发工具缓存清空不掉了怎么办
微信开发者工具是开发微信小程序的必备工具之一,但是,有时候我们在开发小程序的过程中会发现小程序缓存清空不掉,这个问题非常困扰人,因为这样会严重影响开发效率。下面,我将向你介绍微信小程序开发工具缓存清空不掉问题的原理和解决方法。1. 缓存清空不掉的可能原因在
2023-05-26
微信小程序官网开发工具
微信小程序是指在微信客户端内运行的轻应用,它可以像原生应用一样具有良好的用户体验,同时没有安装的繁琐,使用方便快捷。为了方便开发者使用,微信提供了一套小程序开发工具,该工具主要分为两部分:开发者工具和小程序官网。一、开发者工具开发者工具是微信提供的一款小程
2023-05-26
北海微信小程序开发工具有哪些功能
北海微信小程序开发工具是微信小程序开发的专门工具,其主要功能包括小程序开发、调试、发布等。在此基础上,北海微信小程序开发工具还具备以下功能:一、小程序开发流程在使用北海微信小程序开发工具时,我们需要按照以下流程进行:1.创建项目:开发人员可以通过北海微信小
2023-05-22