免费试用

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

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


相关知识:
安阳小程序模板开发
小程序是一种基于微信生态的轻量级应用,对于用户而言不需要安装,不占用手机空间,用户能够直接在微信中使用,具有快速启动、操作简单、用户体验好等特点。而安阳小程序模板开发就是为了简化小程序开发流程和提高开发效率而生的。一、安阳小程序模板开发的原理安阳小程序模板
2023-08-09
安徽教育类小程序开发哪家好
随着移动互联网的快速发展,教育类小程序越来越受到用户的青睐。安徽地区也出现了许多针对教育领域的小程序,让教育资源更加便捷和丰富。那么,在安徽开发教育类小程序哪家好呢?下面就给大家介绍一下。一、原理介绍教育类小程序主要分为三个模块,分别是教育信息展示、教育服
2023-08-09
安徽婚纱摄影小程序开发语言推荐
随着互联网的发展和普及,小程序成为了当前最流行的一种应用程序形式之一。小程序具有开发方便、运行稳定、资源占用低等优点,非常适合在移动设备上使用。在婚纱摄影领域中,开发一款安徽婚纱摄影小程序就成为了一种必然趋势。那么在开发安徽婚纱摄影小程序时,应该选择哪一种
2023-08-09
welinkpc端开发小程序
Welink是一种基于企业微信平台的移动应用程序,它可以为企业带来全方位的办公协作体验。Welink不仅仅是企业的通讯工具,它还提供了一系列的办公工具和服务,包括日程安排、会议管理、公告发布、工作审批等等。同时,Welink也为开发者提供了丰富的应用接口和
2023-08-09
web开发工具开发小程序需要什么技术
要开发Web开发工具,自然需要掌握前端开发相关技术。而开发小程序,还需要熟悉小程序相关技术。下面来分别介绍一下。一、前端开发技术1. HTML/CSS/JavaScriptHTML是制作Web页面的基础,可以定义Web页面结构。CSS用于美化Web页面,可
2023-08-09
vue 小程序开发框架
Vue小程序开发框架是一款集成了Vue.js和小程序开发的框架。它的设计初衷是为了让开发者更加高效地编写小程序代码。Vue小程序开发框架基于Vue.js的组件化思想,将小程序原生API封装成Vue组件,让Vue开发者很容易上手小程序开发,同时也是小程序开发
2023-08-09
java能否开发微信小程序
Java是一种非常流行的编程语言,在Web应用程序和企业应用程序的开发中广泛使用。Java开发人员也可以使用Java开发微信小程序,后续我将为您详细介绍。先来了解一下微信小程序,微信小程序是一种基于微信生态系统的新型应用程序,用户可以在微信中直接使用。微信
2023-08-09
app软件小程序开发
随着智能手机和互联网技术的普及,移动应用程序越来越受到人们的关注和欢迎。其中,APP(Application)、软件和小程序成为了人们日常生活中必不可少的工具。那么,APP、软件和小程序分别是什么?它们有何不同点?它们又是如何进行开发的?下面来一一解析。一
2023-08-09
小程序 可视化开发工具
小程序可视化开发工具是一款面向非专业开发者的小程序开发工具,它通过可视化编辑页面和组件、拖拉拽组件等方式,将小程序的开发门槛进一步降低,让更多的人可以轻松地开发小程序应用。在此篇文章中,我们将详细介绍小程序可视化开发工具的原理及其实现方式。一、小程序可视化
2023-05-26
微信小程序开发工具抓包
微信小程序是近年来非常流行的一种应用类型。在小程序的开发过程中,我们有时需要对小程序进行抓包,从而获取一些网络请求的详细信息。这篇文章将介绍微信小程序开发工具抓包的原理和详细步骤。一、抓包原理抓包就是在客户端与服务器之间截取网络数据包,从而了解数据传输的详
2023-05-26
模板类小程序的开发工具是什么样的
小程序是微信在2017年推出的一种新型应用,它比传统的APP更为轻便,也更具有互联网的特点。小程序主要有两种类型,第一种是服务类小程序,主要用于线上购物、外卖订餐、电影预订等服务。第二种是模板类小程序,模板类小程序是微信推出的一种新型模板,通过快速搭建简单
2023-05-26
小程序嵌入网页使用 web-view 组件注意事项
小程序嵌入网页是一种可以在小程序中展示网页内容的方式,利用 web-view 组件可以实现这个功能。web-view 组件是一个可以承载网页的容器,它的 src 属性指定了要加载的网页的 URL。使用 web-view 组件时,需要注意以下几点:需要在小程序后台配置业务域名,以及 web-view 中引用的 iframe 的域名。
2023-04-06