返回顶部
首页 > 资讯 > 精选 >微信小程序开发时遇到的坑有哪些
  • 731
分享到

微信小程序开发时遇到的坑有哪些

2023-06-13 06:06:15 731人浏览 薄情痞子
摘要

这篇文章主要讲解了“微信小程序开发时遇到的坑有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“微信小程序开发时遇到的坑有哪些”吧!最近参与开发了公司的第一款小程序,开发体验基本类似于基于W

这篇文章主要讲解了“微信小程序开发时遇到的坑有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“微信小程序开发时遇到的坑有哪些”吧!

最近参与开发了公司的第一款小程序,开发体验基本类似于基于WEBview的混合式开发,可以调用官方强大的api,但也有一些坑或者说不习惯的地方。这篇文章从实用性出发,记录了开发过程中的一些问题:

1. 样式优先级混乱

在使用button组件时,发现在class中设置width不生效,下面贴上代码:

.my-button{ width: 140rpx; height: 60rpx; line-height: 60rpx; padding: 0;}

经过微信调试工具排查后,发现user agent的样式优先级居然大于我们自己写的样式类,这在浏览器中基本是不可能发生的事情

微信小程序开发时遇到的坑有哪些

解决方案其实比较简单,给width添加!important的后缀或者即可,修改后我们再看一下效果:

微信小程序开发时遇到的坑有哪些

微信小程序开发时遇到的坑有哪些

加上!important之后,其实宽度的实际效果已经符合我们的预期了,但是微信调试工具却仍然显示user agent样式优先,这应该算是调试工具的一个bug吧。

2. 普通UI组件封装,参数定义繁琐

一般UI视觉稿中的基础组件,例如button,是有特定样式的:比方说背景色/字体。利用小程序的Component函数封装成组件,编写默认样式并接收外部传入的class,可以方便后续开发。

React有<tag {...props}></tag>这种写法,即组件接收props不做处理,只透传给下一个组件,但小程序不支持这种写法(苦搜无果,官方文档也没有说明)。

这就意味着我们需要把所有button组件支持的参数都罗列在properties中:

properties: {  classes: {   type: String,   value: '',  },  type: {   type: String,   value: 'default',  },  plain: {   type: Boolean,   value: false,  },  size: {   type: String,   value: 'default',  },  ...... },

3. 全局样式选择器*被禁用

*{ box-sizing: border-box;}

上面的代码在编译的时候就会报错,因为小程序禁用了这类选择器。大胆猜测具体原因:这类作用范围比较广的选择器和自定义组件的样式隔离产生了冲突??

那怎么去给小程序添加全局通用样式?看来只能自己把用到的标签都手动写一遍了,还好网上有现成的代码可以贴:

view,scroll-view,swiper,swiper-item,movable-area,movable-view,cover-view,cover-image,icon,text,rich-text,progress,button,checkbox-group,checkbox,fORM,input,label,picker,picker-view,radio-group,radio,slider,switch,textarea,navigator,functional-page-navigator,image,video,camera,live-player,live-pusher,map,canvas,open-data,web-view,ad{ box-sizing: border-box;}

4. 自定义组件,bind:tap调用两次

封装基础组件时,例如button,下面的写法应当避免:

onTap(e) { if (!this.data.disabled && !this.data.loading) {  this.triggerEvent('tap', e.detail) }},
<button bindtap="onTap"></button>

这样封装出来的组件,会触发两次tap事件,一次是小程序自身触发的,一次是通过triggerEvent触发。

可以换一个非小程序内置的事件类型,比如click:

onTap(e) { if (!this.data.disabled && !this.data.loading) {  this.triggerEvent('click', e.detail) }},

阻止tap事件冒泡也可以解决:

<button catchtap="onTap"></button>

5. 在wxml中用Boolean()做类型转换

例如在一个组件中,监听一个String类型的参数,如果不为空则显示text标签,否则不显示:

// player.wxml<text class="text1" wx:if="{{ Boolean(leftText) }}">{{ leftText }}</text>
// index.wxml<player leftText="范读"></player>

这种写法,leftText字段很明显已经传递了,但是依旧不显示text标签,当换一种写法后:

// player.wxml<text class="text1" wx:if="{{ leftText }}">{{ leftText }}</text>

这样就是正确的,符合我们的期望。

神奇吧?

6. InnerAudiocontext调用seek方法后,onTimeUpdate回调失效

InnerAudioContext用于播放音频,给它传入onTimeUpdate回调从而获取当前的播放进度。

但是当调用seek方法跳转到指定位置播放时,onTimeUpdate就不再被调用了。

小程序社区其实很多人已经提过这个问题,大概经历了1年半的时间可微信团队迟迟没有修复,只能暂时使用折中的办法来修复,解决方案其实很简单:

progressOnChange(e) { if (this.properties.src && this.data.innerAudioContext) {  const innerAudioContext = this.data.innerAudioContext;  innerAudioContext.pause();  innerAudioContext.seek(innerAudioContext.duration * e.detail.value / 100);  setTimeout(() => {   innerAudioContext.play();  }, 500); }},

先暂停播放,再执行seek方法,然后设置大概500ms的延时调用play方法。

7. InnerAudioContext获取duration的时机问题

本想在音频播放前拿到duration应该是实现不了了,网上关于调用onPlay、onCanplay的说法都不太靠谱,其中一个方案是这样的:

innerAudioContext.onCanplay(() => { setTimeout(() => {  this.setData({   durationStr: secondToTimeStr(innerAudioContext.duration) || '--:--',  }); }, 500);});

且不说setTimeout设置多少毫秒合适,真机上是无效的。

因此还是老老实实的用onTimeUpdate:

innerAudioContext.onTimeUpdate(() => { this.setData({  durationStr: secondToTimeStr(innerAudioContext.duration) || '--:--' })});

如果说觉得每次onTimeUpdate都要计算一次很耗性能的话,可以自行实现只计算一次。

8. 设置页面背景色

当前页面的JSON文件中有个backgroundColor字段,但是设置后无效,后面发现这个字段表示的不是可见区域的背景色,而是页面下拉时窗口的背景色。

微信小程序开发时遇到的坑有哪些

如果需要设置页面背景色,可以通过page标签的样式设置:

page{ background: #f9fafb;}

总结

感谢各位的阅读,以上就是“微信小程序开发时遇到的坑有哪些”的内容了,经过本文的学习后,相信大家对微信小程序开发时遇到的坑有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: 微信小程序开发时遇到的坑有哪些

本文链接: https://lsjlt.com/news/266231.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 微信小程序开发时遇到的坑有哪些
    这篇文章主要讲解了“微信小程序开发时遇到的坑有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“微信小程序开发时遇到的坑有哪些”吧!最近参与开发了公司的第一款小程序,开发体验基本类似于基于w...
    99+
    2023-06-13
  • 微信小程序开发过程中遇到问题有哪些
    小编给大家分享一下微信小程序开发过程中遇到问题有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!微信小程序 开发过程中遇到问题总结第一次正式开发一个小程序,就从以下几个方面来谈一谈小程序...
    99+
    2024-04-02
  • uni-app开发微信小程序遇到的部分踩坑实战
    目录一、组件设置全屏覆盖二、wx.onNetworkStatusChange、uni.onNetworkStatusChange网络状态监听不生效问题三、接口请求写在哪里好?(即返回...
    99+
    2023-02-08
    uni app开发小程序 uniapp 开发微信小程序 微信小程序开发例子
  • 微信小程序开发中需要注意哪些坑
    这篇文章主要介绍了微信小程序开发中需要注意哪些坑,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。“免费”易中坑现在随便在互联网平台搜索小程序开发都有需要打着免费开发的旗号来吸引...
    99+
    2023-06-27
  • 小程序开发中遇到的问题有哪些
    这篇文章主要介绍小程序开发中遇到的问题有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!小程序面试题bindtap和catchtap的区别是什么?bind事件绑定不会阻止冒泡事件向上冒泡,catch事件绑定可以阻止...
    99+
    2023-06-14
  • 微信小程序开发技巧有哪些
    这篇文章主要介绍微信小程序开发技巧有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Q:为什么脚本内不能使用window等对象A:页面的脚本逻辑是在JsCore中运行,JsCore...
    99+
    2024-04-02
  • 开发微信小程序有哪些优点
    这篇“开发微信小程序有哪些优点”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“开发微信小程序有哪些优点”文章吧。微信小程序使用...
    99+
    2023-06-27
  • 微信开发小程序有哪些好处
    这篇文章主要为大家展示了“微信开发小程序有哪些好处”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“微信开发小程序有哪些好处”这篇文章吧。一个。与官方帐户相关联在微信开发小程序之后,这可以为许多企业...
    99+
    2023-06-27
  • 微信小程序的开发类型有哪些
    本篇内容主要讲解“微信小程序的开发类型有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“微信小程序的开发类型有哪些”吧!一、企业展示类型企业展示类小程序相当于一个企业官网的小程序版。它的名称具...
    99+
    2023-06-27
  • 微信小程序开发的优势有哪些
    小编给大家分享一下微信小程序开发的优势有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!优势一:合理转化 应用微信公众平台往微信小程序引流方法,接着应用微信小程...
    99+
    2023-06-27
  • Android小程序开发中遇到的问题有哪些
    本篇内容介绍了“Android小程序开发中遇到的问题有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!渲染列表时用 block 包裹<...
    99+
    2023-06-29
  • 小程序开发过程中遇到的问题有哪些
    这篇文章主要介绍了小程序开发过程中遇到的问题有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇小程序开发过程中遇到的问题有哪些文章都会有所收获,下面我们一起来看看吧。1、确定需求问题虽然说小程序是可以作为服务...
    99+
    2023-06-27
  • 微信小程序开发和APP开发有哪些区别
    这篇文章主要介绍微信小程序开发和APP开发有哪些区别,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!在移动互联网大火的时代,APP和微信小程序已经成为了企业从移动端获取用户流量,实现盈利的重要端口。因为微信小程序体积小...
    99+
    2023-06-27
  • 微信小程序中遇到的iOS兼容性问题有哪些
    这篇文章主要介绍了微信小程序中遇到的iOS兼容性问题有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1.iOS中input的placeh...
    99+
    2024-04-02
  • 微信JS-SDK选择图片遇到的坑有哪些
    这篇文章主要介绍了微信JS-SDK选择图片遇到的坑有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。有个需求要在微信企业号里面做开发,有个...
    99+
    2024-04-02
  • 开发微信小程序有哪些独特的优势
    这篇文章主要介绍“开发微信小程序有哪些独特的优势”,在日常操作中,相信很多人在开发微信小程序有哪些独特的优势问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”开发微信小程序有哪些独特的优势”的疑惑有所帮助!接下来...
    99+
    2023-06-27
  • 微信小程序开发常见的问题有哪些
    这篇文章主要介绍微信小程序开发常见的问题有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、什么是小程序? 和公众号类似,企业可自行认证申请发布,免费获取微信流量。但小程序比公众号的内容形式更丰富,兼顾网站、Ap...
    99+
    2023-06-27
  • 微信小程序开发有哪些常见的问题
    这篇文章主要介绍了微信小程序开发有哪些常见的问题的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇微信小程序开发有哪些常见的问题文章都会有所收获,下面我们一起来看看吧。1.小你程序到底是什么?小程序是无需下载和安装...
    99+
    2023-06-27
  • 微信小程序开发常见问题有哪些
    这篇文章主要介绍微信小程序开发常见问题有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!云开发相关一 云函数调用失败问题[云函数] [login] 调用失败&n...
    99+
    2024-04-02
  • 微信小程序开发中http请求有哪些
    微信小程序开发中http请求有哪些,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。在微信小程序进行网络通信,只能和指定的域名进行通信,微信小程序...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作