Wepy-小程序踩坑记
引言
用过原生开发的小程序也知道除了api 其他功能性的内容并不多对于需要做大型项目来说是比较难入手的,因此朋友推荐的wepy我就入坑鸟。。。
这么一个跟vue的开发方式类似的框架,不过说起来跟vue类似,但是用起来还真不是那么简单。api开发还是和部分vue有出入,因此如下记录,入手的教程就不发了只发踩坑。
官方文档
下面是已经踩过的坑
wepy 问题查找
https://github.com/Tencent/we...
比较建议在这里查找下遇到的问题之后在提问毕竟这里都是收集比较齐全
标签中的指令简写
跟Vue类似
- 对于动态赋值的属性可以使用 :attr="value" 的方式
- 对于绑定事件可以使用@click="fn"的方式
data使用注意点
对于视图中需要用到的数据,应该事先在data中定义一下,哪怕此时没有数据,也应该定义一个空值
WePY中的methods的使用
- 只能声明页面的bind、catch事件,不能声明自定义方法
- 自定义方法应该跟methods平级
this 运用
小程序里修改data 里面的属性或者赋值都需要利用this.setdata()而wepy 基本就是利用this.属性即可。如果是异步返回或者更新dom需要this.$apply()触发脏值检测
页面跳转
navigateTo() 和 redirectTo() 的差别。
navigateTo()保留当前页面,跳转到应用内的某个页面(即:显示顶部导航栏左上角返回按钮,可以有返回路径)
redirectTo()关闭当前页面,跳转到应用内的某个页面(即:不显示左上角返回按钮,如需要返回在页面内自己添加按钮写路径或者利用wx.navigateBack()和 getCurrentPages() 获取当前的页面栈,决定需要返回几层。
- 简单来说如果你需要tabbar有返回就用navigateTo,不需要就用redirectTo
- 只能用 switchTab() 跳转到 tabbar 页面
文件上传
上传文件没有传统html中的文件域(<input type="file"/>),要想上传文件只能使用API: uploadFile()
更新DOM$apply
如果需要更新DOM,应该在随后调用组件实例的$apply方法,才能更新到页面中
this.name="abc";
this.$apply()
- PS:对于性能要求较高的应用,不要频繁的调用$apply()更新DOM,可以根据实际情况更新父组件向子组件传递数据,通过props的方式传递
- 如果需要传递动态数据,加上.sync的修饰符就可以解决(:prop.snyc='item')
- 如果需要子组件数据同步到父组件,需要在定义props的时候设置twoWay:true
- (所有异步数据传递必须用$apply,同步的话才能使用.sync)
mixin
wepy的mixin,与vue中的mixin执行顺序相反
- wepy中,会先执行组件自身的,再执行mixin中的
- vue中对于钩子函数,会先执行mixin中的,再执行组件自身的;vue中methods如果和mixin同名,那么只会执行自身的方法
关于canvas和base64
小程序中可以进行canvas相关操作,但是跟纯html中的canvas有所不同(api差异),canvas的使用都应该参照:小程序中的canvas
arrayBuffer和base64互转
本段内容在文档中是搜索不到的,但是确实是支持的,使用如下2种方式:
wx.arrayBufferToBase64(arrayBuffer)
wx.base64ToArrayBuffer(base64)
命名规范
小程序内部定义的实例API都以$开头,所以我们在定义实例属性、方法的时候不能以$开头,以便区分
同名组件共享同一实例及数据
循环渲染组件时,容易出现组件数据相互污染。可以用最外层的组件监听事件冒泡以修改数据,同时触发事件的组件用setTimeout包裹,保证执行顺序。
循环渲染组件:
wepy的循环渲染组件,必须使用 <repeat>标签,或者微信官方的<block>标签(这两个标签都是不会渲染到dom的)否则就不会渲染成功。
组件component 没有 onLoad 等页面事件
- 页面中设置好 this.$broadcast('someEvent', option);
- 组件监听事件则可以解决
page
页面类,继承自wepy.component,拥有页面所有的属性与方法。
全部属性继承自wepy.component。而wepy.component没有onLoad 等方法
未完待续-----------------
Wepy-小程序踩坑记的更多相关文章
- 微信小程序踩坑记
1:微信小程序之去掉横向滑动滚动条 /** 去除横向滚动条 */ ::-webkit-scrollbar { width: 0; height: 0; color: transparent; } 2: ...
- 小程序踩坑记- tabBar.list[3].selectedIconPath 大小超过 40kb
重新启动微信小程序编辑器的时候遇到了这样的一个问题: tabBar.list[3].selectedIconPath 大小超过 40kb 微信小程序开发的过程之中总会出现这样或者那样的错误,需要我们耐 ...
- 微信小程序踩坑集合
1:官方工具:https://mp.weixin.qq.com/debug/w ... tml?t=1476434678461 2:简易教程:https://mp.weixin.qq.com/debu ...
- 使用wepy框架搭建微信小程序采坑记(一)
1.什么是wepy 这个框架是腾讯内部出的一个类MVVM的小程序开发框架.大体上来说语法是类VUE的,所以如果有VUE开发经验的话迁移成本会低一些.至于具体的怎么使用我就不赘言了,有问题查文档(官方文 ...
- 微信小程序踩坑之一[thist]使用技巧
刚上手小程序 时,习惯把this当成jquery中的$(this)来用,实际上这两个还是有差别的 在页面方法中调用其他方法,一般是用this.function(),直接调用小程序 的方法或函数则是用w ...
- 微信小程序踩坑之一[wx.request]请求模式
最近在做小程序时,使用wx.request()方法请求时, 当使传输string类型时,一定要声明method请求模式为post,否则会一直报错,而不声明时默认为get, 已填坑 =,= wx.req ...
- 小程序 ----踩坑 ---安卓iOS兼容等
关于小程序一些小功能的代码都在这个GitHub上,感兴趣的可以去看看,https://github.com/huihuijiang/miniProgram目前有:列表左滑删除,拖拽浮标 一.小程序坑1 ...
- 微信小程序踩坑之前端问题处理篇
近期完成了一个小程序,自己做的前后端开发.真是惨哭我了o(╥﹏╥)o,下面几点希望大家可以避雷. 首先,想先介绍一下我遇到问题的解决思路: 1.先在postman调试接口,看数据获取是否正常, 2.在 ...
- 微信小程序踩坑之获取手机号
最近在开发小程序遇到这样一个问题, 在用户点击授权后去解密手机号时会出现第一次失败,第二次成功的情况.研究了一段时间,终于找到比较合理的解决方案,在此记录并总结一下,希望可以帮助到大家. 需求描述 在 ...
随机推荐
- 2020.9.28 多进程multiprocess 进程池pool 子进程subprocess 进程间通信
1.multiprocessing模块--跨平台版本的多进程模块 multiprocessing模块提供了一个Process类来代表一个进程对象,下面的例子演示了启动一个子进程并等待其结束: from ...
- [2022-2-18] OICLASS提高组模拟赛2 A·整数分解为2的幂
题目链接 问题 A: 整数分解为 2 的幂 题目描述 任何正整数都能分解成 2 的幂,给定整数 N,求 N 的此类划分方法的数量!由于方案数量较大,输出 Mod 1000000007 的结果. 比如 ...
- Phoenix使用
目录 Phoenix连接 Phoenix常用命令 表映射 视图映射 表映射 Phoenix二级索引 开启索引支持 全局索引 创建索引后 创建多条件索引后 本地索引 覆盖索引 总结 Phoenix JD ...
- pep9伪代码
Set sum to 0 Read num 1 Set sum to sum + num1 Read num2 Set sum to sum + num2 Read num3 Set sum to s ...
- tensorflow源码解析之common_runtime-session
目录 核心概念 session session_factory 1. 核心概念 session可以认为是一个执行代理.我们在客户端构建计算图,提供输入,然后把计算图丢给session去执行.因此,se ...
- mybatis——逆向工程中 where (条件1)and (条件2 or 条件3 or 条件4)
where (条件1)and (条件2 or 条件3 or 条件4) = where (条件1 and 条件2)or (条件1 and 条件3) or (条件1 and 条件4) 结果 是这样的 WH ...
- SpringBoot整合RabbitMQ-5.7-课堂笔记-02
- 开启路由器的TCP拦截
TCP拦截即TCP intercept,大多数的路由器平台都引用了该功能,其主要作用就是防止SYN泛洪攻击.SYN攻击利用的是TCP的三次握手机制,攻击端利用伪造的IP地址向被攻击端发出请求,而被攻击 ...
- 使用数据库、Redis、ZK分别实现分布式锁!
分布式锁三种实现方式: 基于数据库实现分布式锁: 基于缓存(Redis等)实现分布式锁: 基于Zookeeper实现分布式锁: 基于数据库实现分布式锁 悲观锁 利用select - where - f ...
- ZYNQ 双CPU裸机运行例程
vivado 2014.4 特殊情况:总DDR内存大于512MB,且CPU0已经占用了超过512MB,这时按以下步骤CPU1无法启动. 原因:启动入口地址限制.更改方法如下: 打开cpu1_bsp\p ...