前言

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

坑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. C#串口通讯中常用的16进制的字节转换

    1.对于通讯协议的十六进制数值进行简单转换 //二进制转十进制Console.WriteLine("二进制 111101 的十进制表示: "+Convert.ToInt32(&qu ...

  2. hey-cli初使用

    当前项目负责人打算用hey-cli ,初步接触了hey-cli 是一款比vue-cli使用还要简单的脚手架 1. 先全局安装hey-cli    npm install -g hey-cli 2. 初 ...

  3. 《数据密集型应用系统设计》读书笔记-ch1可靠、可扩展与可维护的应用系统

    我们以Twitter为例,使用其2012年11月发布的数据.Twitter的两个典型业务操作是: - 发布tweet消息: 用户可以快速推送新消息到所有的关注者,平均大约4.6k request/se ...

  4. Oracle TM锁和TX锁

    CREATE TABLE "TEST6" ( "ID" ), "NAME" ), "AGE" ,), "SEX ...

  5. sencha touch overlay 里使用 list

    1 sencha touch 中 list 如果不设置一个固定高度或 flex : 1,  list 的内容就不会显示出来. 主要是因为 list 是可滚动的,你不设置高度 ,list 的高度默认就是 ...

  6. jar包读取配置文件

    读取jar包内配置文件: Properties config = new Properties(); InputStream in = this.getClass().getClassLoader() ...

  7. Android如何避免输入法弹出时遮挡住按钮或输入框

    在AndroidManifest.xml中为对应的activity添加android:windowSoftInputMode="adjustResize" 在AndroidMani ...

  8. 配置文件详解和核心api讲解

    一.配置文件详解 1.映射文件详解 1.映射配置文件的位置和名称没有限制. -建议:位置:和实体类放在统一目录下.  名称:实体类名称.hbm.xml.    2.在映射配置文件中,标签内的name属 ...

  9. 最小化安装的redhat/centos安装gnome桌面

    因系统版本和语言环境不同,安装包的名字会有所差别 安装方式可以选择直接联网安装,也可以加载dvd镜像源安装,这里针对配置redhat/centos本地dvd的yum源做个记录: 1.复制 redhat ...

  10. Android应用程序开发

    第一章 Android应用初体验 1.1应用基础 activity是Android SDK中Activity类的一个具体实例,负责管理用户与信息屏的交互. 应用的功能是通过编写一个个Activity子 ...