免费试用

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

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内直接运行。它不需要下载和安装,用户只需在搜索结果页中点击相应的小程序图标即可快速访问。百度小程序官方开发平台是为开发者提供的一个工具和资源平台,用于创建和管理小程序。百度小程序官方开发平台主要包含以下
2023-08-23
安防小程序开发方案
安防小程序是一种跨平台的应用程序,适用于智能家居安防和商业安防等领域。它具有实时监测、视频远程查看、智能分析等功能,可以同时连接多个摄像头和传感器。本文将详细介绍安防小程序开发的原理和方案。一、安防小程序开发原理安防小程序的开发,需要实现以下功能:1. 用
2023-08-09
安卓应用开发和小程序开发区别
安卓应用开发和小程序开发都是移动应用开发的流派,但是两者之间有很多的区别,接下来我简单介绍一下。安卓应用开发:安卓应用开发是指开发Android手机上的应用,采用Java和Kotlin作为基础开发语言。安卓应用开发通常运用Android SDK和Andro
2023-08-09
vue 可以开发小程序吗
Vue是一款流行的前端框架,适用于构建单页应用程序。虽然它主要用于 web 开发,但最近有一些项目在使用 Vue 构建小程序。这种做法既可以利用 Vue 的优点,在小程序中提高开发效率,同时也可以减少学习成本。在本文中,我将详细介绍 Vue 可以在小程序中
2023-08-09
mac小程序开发
Mac小程序开发(也称为Mac应用程序开发)是一种基于OS X系统的软件开发。Mac应用程序可以是基于单机、局域网或互联网的应用程序,涵盖了从个人办公软件到产品设计软件主要从事环境、架构、框架的搭建和功能实现。一、开发环境准备开发Mac应用程序需要一些基础
2023-08-09
flask微信小程序开发
Flask框架是一种基于Python语言的Web开发框架,它具有轻量级、灵活性和易于学习等特点,受到了许多Web开发者的喜爱。而微信小程序则是近年来非常火热的一种移动端应用开发方式,凭借着其轻量级、高效性和便利性,越来越受到广大用户的青睐。本文将详细介绍如
2023-08-09
biubiu小程序开发
Biubiu小程序是一款跑腿服务小程序,通过手机端实现用户下单,商家接单,骑手配送等全过程,很受用户欢迎。在介绍Biubiu小程序的原理和如何开发之前,先来了解一下其主要功能和特点。Biubiu小程序主要功能包括用户注册登录,商品浏览和下单,订单管理,商家
2023-08-09
android开发图案解锁小程序
Android设备中,图案解锁是一种常见的锁定形式,它允许用户通过连接画出的特定形式来解锁设备,而不是通过输入密码或指纹识别来解锁。在本文中,我们将介绍如何为Android开发一个图案解锁小程序。 首先,我们需要理解Android图案解锁的原理。它通过将特
2023-08-09
javascript打包exe
JavaScript 打包成 EXE 文件(详细介绍)在这篇文章中,我们将详细介绍如何将 JavaScript 应用打包成一个独立的 EXE 文件,以便在没有安装 Node.js 或其他依赖的情况下在 Windows 上运行。实现这一点有多种方法,本文将介
2023-05-26
ironpython生成exe
IronPython 是一个开源的 Python 编译器,它可以将 Python 代码转换为 .NET 框架的程序,以便在 Windows 平台上运行。创建一个 IronPython 项目并生成一个可执行的 .exe 文件,可以让你的 Python 代码更
2023-05-26
小程序最新开发工具
随着手机应用和小程序的普及,开发小程序的需求也越来越高。为了让开发者更方便快捷地开发小程序,各大技术公司已经推出了许多小程序开发工具。本文将介绍小程序最新开发工具的原理和详细的使用方法,帮助开发者们提高开发效率。一、概述小程序开发工具是一款用于小程序开发的
2023-05-26
海南自助洗车小程序开发工具
随着物质生活水平的提高,人们越来越注重汽车的养护和维护。现在,洗车已经成为了许多人周末生活的一部分,但传统的洗车方式存在着很多问题:耗费时间、浪费水资源、对环境造成污染等等。因此,一些互联网创业公司开始研发自助洗车项目,为用户提供更加便捷、经济、环保的洗车
2023-05-22