前言

微信小程序自去年公测以来,我司也申请了一个帐号开发,春节前后开始开发,现在终于告一个段落了。谨以此文记录下踩过的坑。

坑1:scroll-view与onPullDownRefresh冲突

由于有几个页面需要将导航tab栏自动置顶,所以使用了scroll-view。然而又想要下拉刷新,本来想直接使用onPullDownRefresh,结果却发现下拉的时候onPullDownRefresh根本没有!囧!

研究了半天,最终监听touchXXX自己模拟了个下拉刷新。(具体实现方案改日再分享。)为了尽量接近微信原生的下拉刷新,还特意抄了半天微信原生的下拉刷新动画...

<div class="loading"><div class="dot"></div></div>

  

.loading{
display: block;
width: 100%;
height: 20px;
padding: 20px 0;
text-align: center;
background: #eee;
}
.loading::before,
.loading .dot,
.loading::after
{
content: '';
display: inline-block;
color: transparent;
width: 14px;
height: 14px;
border-radius: 14px;
background: #fff;
overflow: hidden;
margin: 0 8px;
} .loading::before,
.loading .dot,
.loading::after{
-webkit-animation: pulldown-refresh-loader 1.4s infinite ease-in-out;
animation: pulldown-refresh-loader 1.4s infinite ease-in-out;
-webkit-animation-fill-mode: both;
animation-fill-mode: both;
}
.loading::before{
-webkit-animation-delay: -0.32s;
animation-delay: -0.32s;
}
.loading .dot{
-webkit-animation-delay: -0.16s;
animation-delay: -0.16s;
} @-webkit-keyframes pulldown-refresh-loader {
0%, 80%, 100% { background-color: #f0f0f0; }
40% { background-color: #fff; }
} @keyframes pulldown-refresh-loader {
0%, 80%, 100% { background-color: #f0f0f0; }
40% { background-color: #fff; }
}

 

坑2:无法获取元素的高度

本来有个页面是要做成监听滚动,然后自动切换顶部tab的,类似 bootstrap的滚动监听 的效果。 然而里面有大段的文本,而文本的高度根本算不来,囧。还是放弃这个效果吧。

坑3:无法在bindXXX的事件处理的时候阻止冒泡

有人说,你可以使用catchXXX呀!然而,我在某些时候才需要阻止事件冒泡,另外一些时候是不需要阻止冒泡的,是需要默认行为...

最终采用了一个很挫的方案来“解决” -- 复制那个<view>根据是否组织冒泡分别渲染成bindXXXcatchXXX...:

<view class="{{preventDefault && 'hide'}}" catchXXX="yyy" >zzz</view>
<view class="{{!preventDefault && 'hide'}}" bindXXX="yyy" >zzz</view>

这个还不能简单地使用wx:if,否则切换的成本太高了点。

坑4: 预览前构建时间比较长

貌似没有好办法,预览的构建貌似不是增量的,希望微信官方啥时候能改成增量的就好了。点击预览按钮后去倒杯水喝吧。

坑5: 组件复用好蛋疼

小程序里面虽然提供了<template>可以复用一部分模版,但是我们要是想复用一个具有完整功能组件(比如一个对话框 )就会非常蛋疼 -- 数据怎么传呢?业务逻辑代码写在哪里?样式如何加载?

目前解决方法是将组件封装成 xxx.jsxxx.wxmlxxx.wxss,用的时候都要引用下... 好麻烦!很怀念React里面的组件。

回头考虑通过在微信小程序前面加一道构建,以便自动引用组件相关东东。

坑6:不支持webview直接嵌入html代码

像后台通过富文本编辑器录入的文章页面没法直接显示了... 还好有wxParse。尽管样式调起来很蛋疼,起码能看了。

坑7:测试与发布

微信开发者工具的预览版本只能谁登录谁来扫,其他人扫根本开不了 --- 同是一个小程序的开发者也不行,囧。为了让测试人员方便测试,还得教会测试人员如何登录微信开发者工具,如何更新代码,如何构建并预览小程序。。。

啥,你说有“预览版本”,预览版本更麻烦,上传的时候只能管理员才能上传,上传完还必须选择为预览版本,预览版本还不是每个人能看的,而是加到预览者里面的才能看(开发者居然默认没有加到预览者里面!) -- 每一个操作都是要管理员扫码...

后记

微信小程序坑还有很多,未完待续...

微信小程序开发踩坑记的更多相关文章

  1. 微信小程序开发踩坑日记

    2017.12.29  踩坑记录 引用图片名称不要使用中文,尽量使用中文命名,IDE中图片显示无异样,手机上图片可能出现不显示的情况. 2018.1.5  踩坑记录 微信小程序设置元素满屏,横向直接w ...

  2. 微信小程序开发踩坑与总结 -

    原文链接:https://segmentfault.com/a/1190000008516296 前段时间把公司小程序项目开发完成了,所以来写写自己开发过程中碰到的问题和解决方法,以及用到的提高效率的 ...

  3. 微信小程序开发-踩坑

    异步请求处理 详情描述: 微信小程序的wx.request({})请求时异步处理,以下代码 wx.reuest({ url:"https://XXXA", method:" ...

  4. [转]微信小程序开发踩坑记录

    本文转自:http://www.cnblogs.com/NKnife/p/6283605.html 1.由于小程序wx.request()方法是异步的,在app.js执行ajax后,各分页加载app. ...

  5. 微信小程序开发踩坑记录

    1.由于小程序wx.request()方法是异步的,在app.js执行ajax后,各分页加载app.js的全局数据时,无法按顺序加载.例: //app.js App({ ajax:function() ...

  6. 微信小程序开发踩坑之旅

    项目之始: 一.搭建新项目时出现了 page[pages/XXX/XXX] not found.May be caused by :1. Forgot to add page route in app ...

  7. 我的微信小程序入门踩坑之旅

    前言 更好的阅读体验请:我的微信小程序入门踩坑之旅 小程序出来也有一段日子了,刚出来时也留意了一下.不过赶上生病,加上公司里也有别的事,主要是自己犯懒,就一直没做.这星期一,赶紧趁着这股热乎劲,也不是 ...

  8. 微信小程序开发常见坑

    前段时间稍微涉猎了微信小程序开发,踩了一些坑,在此总结出来,希望能为小伙伴们提供一点帮助. 页面跳转 对于页面跳转,可能习惯性想到wx.navigateTo,但是在跳转到目标页面是一个tab时,此接口 ...

  9. 微信小程序开发填坑指南V1

    近期用了一星期的时间,开发了一个小程序.小程序名称是:小特Jarvis,取自钢铁侠的管家. 后台采用C#编写,WebAPI接口.其实开发时间并不多,小程序本身提供的API,相比公众号的API来说,已经 ...

随机推荐

  1. 4.nginx高可用

    1.大体结构 一.使用场景介绍: nginx做负载均衡,来达到分发请求的目的,但是不能很好的避免单点故障,假如nginx服务器挂点了,那么所有的服务也会跟着瘫痪 .keepalived+nginx,就 ...

  2. CentOS&.NET Core初试-2-安装.NET Core SDK和发布网站

    系列目录 CentOS的安装和网卡的配置 安装.NET Core SDK和发布网站 Nginx的安装和配置 安装守护服务(Supervisor) 安装.NET Core SDK 注册Microsoft ...

  3. (转)Shell常用的特殊位置参数变量说明

    Shell常用的特殊位置参数变量说明 原文:http://m.blog.itpub.net/15498/viewspace-2151142/ $0    获取当前执行的shell脚本的文件名,如果执行 ...

  4. a[i]==i[a]==*(i+a)==*(a+i)

    在C语言中,如果我们要访问一个数组的某个下标对应的元素,通常的写法是a[i].但从汇编的角度看,写成i[a]一点问题都没有. 下面通过代码给出证明. o foo1.c int main(int arg ...

  5. BNU27937——Soft Kitty——————【扩展前缀和】

    Soft Kitty Time Limit: 1000ms Memory Limit: 65536KB 64-bit integer IO format: %lld      Java class n ...

  6. 启停无线网卡bat脚本

    @echo off color 2 title 启停无线网卡 echo 启动无线网卡=======>按1键 echo 关闭无线网卡=======>按2键 set /p n= if /i & ...

  7. JQuery对数组的一些操作总结

    JQuery对数组的处理非常便捷并且功能强大齐全,一步到位的封装了很多原生js数组不能企及的功能.下面来看看JQuery数组的强大之处在哪. $.each(array, [callback]) 遍历 ...

  8. Spring学习(一) IoC

      文章部分图片来自参考资料,本文介绍的是 Spring 的两个重要概念,是学习总结. 我们依旧提出几个问题,帮助我们在学习中带着问题解答. 问题 : 如何理解Ioc,它解决了什么难题(或者说是使用它 ...

  9. redis操作基本命令

    Redis—— Remote Dictionary Server,它是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API,我们 ...

  10. Spring学习笔记:Spring整合Mybatis(mybatis-spring.jar)(二:mybatis整合spring)

    http://blog.csdn.net/qq598535550/article/details/51703190 二.Spring整合mybatis其实是在mybatis的基础上实现Spring框架 ...