免费试用

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

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 的功能,但不需要下载和安装,可以直接通过搜索引擎或扫描二维码的方式打开。下面是百度小程序注册和开发的详细流程。1. 注册百度账号:首先,你需要
2023-08-23
百度企业小程序开发
百度企业小程序是百度推出的一种实现移动应用功能的解决方案,旨在帮助企业快速搭建自己的小程序平台,并提供丰富的功能支持。本文将介绍百度企业小程序的原理和详细开发流程。一、百度企业小程序原理百度企业小程序采用前后端分离的架构,主要包含两个核心组件:前端和后端。
2023-08-23
安徽电商类小程序开发平台推荐知乎
随着电子商务行业的不断发展,越来越多的企业开始使用小程序来进行电商经营。安徽地区的企业也不例外,他们需要强大的小程序开发平台来满足自己的需求。在这篇文章中,我将向大家介绍几个安徽电商类小程序开发平台。1. 虎厂网络虎厂网络是一家专注于为企业提供一站式小程序
2023-08-09
安徽瑜伽小程序开发语言有哪些公司
安徽瑜伽小程序开发是指在微信小程序上面开发一款瑜伽软件。针对瑜伽爱好者,开发人员可以将瑜伽的动作技巧,健身效果,运动方式等内容进行详细的解释。目前在安徽地区,开发小程序的编程语言有多种,下面将介绍其中的几种。1. JavaScriptJavaScript
2023-08-09
wepy框架开发小程序怎么预览
Wepy 框架是一种用于开发小程序的前端框架,它使用类 Vue.js 的语法结构,并提供类 Vue.js 的特性,比如组件化、数据绑定和事件监听等等。在 Wepy 框架中,可以通过预览机制来预览项目并调试项目功能,然后再发布到小程序平台上。预览机制是一种在
2023-08-09
webview2开发小程序
Webview2是微软推出的一款基于Chromium的浏览器控件,它可以轻松集成到任何Windows应用程序中,使得这些应用程序可以让用户在程序内部访问Web内容。对于开发者来说,Webview2的优点是提供了一种可以在程序内部嵌入Chromium浏览器的
2023-08-09
thinkphp小程序开发教程外包
ThinkPHP是一个开源的PHP应用程序框架,它以MVC模式设计,具有代码简洁,易于维护,扩展性强等特点。在移动互联网时代,小程序已经成为了一个非常流行的平台,因为其体积小、速度快、功能丰富等特点,已经成为了不少创业者和开发者的首选工具。在这篇文章中,我
2023-08-09
qq小程序怎样开发
QQ小程序是腾讯旗下移动应用QQ推出的一种小程序类型。开发QQ小程序,需要使用QQ开发者工具。以下是QQ小程序开发的详细介绍:1. 环境搭建:在开发QQ小程序之前,需要先安装QQ开发者工具。QQ开发者工具是一套专门用于开发QQ小程序的IDE。同时,也需要确
2023-08-09
python开发的小游戏程序
Python是一种高级编程语言,也是互联网领域中常用的一种语言。Python非常适合初学者学习,因为它易于理解和上手。在Python中,可以用各种语法和模块来开发各种类型的游戏,从而提供给用户全新的游戏体验,这些游戏可以是文本模式下的,也可以是多媒体模式下
2023-08-09
hbuilder怎么开发微信小程序
微信小程序是一种全新的开发平台,相比传统的APP,它有着更快的开发速度、更低的开发成本、更小的安装包体积等优势,因此广受开发者的欢迎。而HBuilder是一个很好的跨平台开发工具,可以用来开发多种类型的应用程序,其中包括微信小程序。接下来,本文将详细介绍如
2023-08-09
新疆果蔬小程序开发工具
新疆果蔬小程序是一款基于微信平台的应用程序,面向果蔬销售行业的在线购物平台。它可以让消费者轻松地浏览并购买新疆地区杂果、果蔬和农副产品,还能实现在线支付和配送等功能。为了实现这一功能,需要用到一款专门用于小程序开发的工具,下面我们来详细介绍一下。小程序开发
2023-05-26
微信小程序开发工具怎么注册账户
微信小程序开发工具是用来开发和调试小程序的工具。要使用微信小程序开发工具,需要注册微信公众号和小程序。以下是详细的注册流程:1.注册微信公众号首先需要注册一个微信公众号,以便获取小程序账号。打开微信公众平台官方网站,然后点击“注册”。填写必要的注册信息,包
2023-05-26