微信小程序开发踩坑记
前言
微信小程序自去年公测以来,我司也申请了一个帐号开发,春节前后开始开发,现在终于告一个段落了。谨以此文记录下踩过的坑。
坑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>根据是否组织冒泡分别渲染成bindXXX或catchXXX...:
<view class="{{preventDefault && 'hide'}}" catchXXX="yyy" >zzz</view>
<view class="{{!preventDefault && 'hide'}}" bindXXX="yyy" >zzz</view>
这个还不能简单地使用wx:if,否则切换的成本太高了点。
坑4: 预览前构建时间比较长
貌似没有好办法,预览的构建貌似不是增量的,希望微信官方啥时候能改成增量的就好了。点击预览按钮后去倒杯水喝吧。
坑5: 组件复用好蛋疼
小程序里面虽然提供了<template>可以复用一部分模版,但是我们要是想复用一个具有完整功能组件(比如一个对话框 )就会非常蛋疼 -- 数据怎么传呢?业务逻辑代码写在哪里?样式如何加载?
目前解决方法是将组件封装成 xxx.js, xxx.wxml 和 xxx.wxss,用的时候都要引用下... 好麻烦!很怀念React里面的组件。
回头考虑通过在微信小程序前面加一道构建,以便自动引用组件相关东东。
坑6:不支持webview直接嵌入html代码
像后台通过富文本编辑器录入的文章页面没法直接显示了... 还好有wxParse。尽管样式调起来很蛋疼,起码能看了。
坑7:测试与发布
微信开发者工具的预览版本只能谁登录谁来扫,其他人扫根本开不了 --- 同是一个小程序的开发者也不行,囧。为了让测试人员方便测试,还得教会测试人员如何登录微信开发者工具,如何更新代码,如何构建并预览小程序。。。
啥,你说有“预览版本”,预览版本更麻烦,上传的时候只能管理员才能上传,上传完还必须选择为预览版本,预览版本还不是每个人能看的,而是加到预览者里面的才能看(开发者居然默认没有加到预览者里面!) -- 每一个操作都是要管理员扫码...
后记
微信小程序坑还有很多,未完待续...
微信小程序开发踩坑记的更多相关文章
- 微信小程序开发踩坑日记
2017.12.29 踩坑记录 引用图片名称不要使用中文,尽量使用中文命名,IDE中图片显示无异样,手机上图片可能出现不显示的情况. 2018.1.5 踩坑记录 微信小程序设置元素满屏,横向直接w ...
- 微信小程序开发踩坑与总结 -
原文链接:https://segmentfault.com/a/1190000008516296 前段时间把公司小程序项目开发完成了,所以来写写自己开发过程中碰到的问题和解决方法,以及用到的提高效率的 ...
- 微信小程序开发-踩坑
异步请求处理 详情描述: 微信小程序的wx.request({})请求时异步处理,以下代码 wx.reuest({ url:"https://XXXA", method:" ...
- [转]微信小程序开发踩坑记录
本文转自:http://www.cnblogs.com/NKnife/p/6283605.html 1.由于小程序wx.request()方法是异步的,在app.js执行ajax后,各分页加载app. ...
- 微信小程序开发踩坑记录
1.由于小程序wx.request()方法是异步的,在app.js执行ajax后,各分页加载app.js的全局数据时,无法按顺序加载.例: //app.js App({ ajax:function() ...
- 微信小程序开发踩坑之旅
项目之始: 一.搭建新项目时出现了 page[pages/XXX/XXX] not found.May be caused by :1. Forgot to add page route in app ...
- 我的微信小程序入门踩坑之旅
前言 更好的阅读体验请:我的微信小程序入门踩坑之旅 小程序出来也有一段日子了,刚出来时也留意了一下.不过赶上生病,加上公司里也有别的事,主要是自己犯懒,就一直没做.这星期一,赶紧趁着这股热乎劲,也不是 ...
- 微信小程序开发常见坑
前段时间稍微涉猎了微信小程序开发,踩了一些坑,在此总结出来,希望能为小伙伴们提供一点帮助. 页面跳转 对于页面跳转,可能习惯性想到wx.navigateTo,但是在跳转到目标页面是一个tab时,此接口 ...
- 微信小程序开发填坑指南V1
近期用了一星期的时间,开发了一个小程序.小程序名称是:小特Jarvis,取自钢铁侠的管家. 后台采用C#编写,WebAPI接口.其实开发时间并不多,小程序本身提供的API,相比公众号的API来说,已经 ...
随机推荐
- 4.nginx高可用
1.大体结构 一.使用场景介绍: nginx做负载均衡,来达到分发请求的目的,但是不能很好的避免单点故障,假如nginx服务器挂点了,那么所有的服务也会跟着瘫痪 .keepalived+nginx,就 ...
- CentOS&.NET Core初试-2-安装.NET Core SDK和发布网站
系列目录 CentOS的安装和网卡的配置 安装.NET Core SDK和发布网站 Nginx的安装和配置 安装守护服务(Supervisor) 安装.NET Core SDK 注册Microsoft ...
- (转)Shell常用的特殊位置参数变量说明
Shell常用的特殊位置参数变量说明 原文:http://m.blog.itpub.net/15498/viewspace-2151142/ $0 获取当前执行的shell脚本的文件名,如果执行 ...
- a[i]==i[a]==*(i+a)==*(a+i)
在C语言中,如果我们要访问一个数组的某个下标对应的元素,通常的写法是a[i].但从汇编的角度看,写成i[a]一点问题都没有. 下面通过代码给出证明. o foo1.c int main(int arg ...
- BNU27937——Soft Kitty——————【扩展前缀和】
Soft Kitty Time Limit: 1000ms Memory Limit: 65536KB 64-bit integer IO format: %lld Java class n ...
- 启停无线网卡bat脚本
@echo off color 2 title 启停无线网卡 echo 启动无线网卡=======>按1键 echo 关闭无线网卡=======>按2键 set /p n= if /i & ...
- JQuery对数组的一些操作总结
JQuery对数组的处理非常便捷并且功能强大齐全,一步到位的封装了很多原生js数组不能企及的功能.下面来看看JQuery数组的强大之处在哪. $.each(array, [callback]) 遍历 ...
- Spring学习(一) IoC
文章部分图片来自参考资料,本文介绍的是 Spring 的两个重要概念,是学习总结. 我们依旧提出几个问题,帮助我们在学习中带着问题解答. 问题 : 如何理解Ioc,它解决了什么难题(或者说是使用它 ...
- redis操作基本命令
Redis—— Remote Dictionary Server,它是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API,我们 ...
- Spring学习笔记:Spring整合Mybatis(mybatis-spring.jar)(二:mybatis整合spring)
http://blog.csdn.net/qq598535550/article/details/51703190 二.Spring整合mybatis其实是在mybatis的基础上实现Spring框架 ...