引言

用过原生开发的小程序也知道除了api 其他功能性的内容并不多对于需要做大型项目来说是比较难入手的,因此朋友推荐的wepy我就入坑鸟。。。
这么一个跟vue的开发方式类似的框架,不过说起来跟vue类似,但是用起来还真不是那么简单。api开发还是和部分vue有出入,因此如下记录,入手的教程就不发了只发踩坑。

官方文档

小程序的官方文档
wepy官方文档

下面是已经踩过的坑

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. 微信小程序踩坑记

    1:微信小程序之去掉横向滑动滚动条 /** 去除横向滚动条 */ ::-webkit-scrollbar { width: 0; height: 0; color: transparent; } 2: ...

  2. 小程序踩坑记- tabBar.list[3].selectedIconPath 大小超过 40kb

    重新启动微信小程序编辑器的时候遇到了这样的一个问题: tabBar.list[3].selectedIconPath 大小超过 40kb 微信小程序开发的过程之中总会出现这样或者那样的错误,需要我们耐 ...

  3. 微信小程序踩坑集合

    1:官方工具:https://mp.weixin.qq.com/debug/w ... tml?t=1476434678461 2:简易教程:https://mp.weixin.qq.com/debu ...

  4. 使用wepy框架搭建微信小程序采坑记(一)

    1.什么是wepy 这个框架是腾讯内部出的一个类MVVM的小程序开发框架.大体上来说语法是类VUE的,所以如果有VUE开发经验的话迁移成本会低一些.至于具体的怎么使用我就不赘言了,有问题查文档(官方文 ...

  5. 微信小程序踩坑之一[thist]使用技巧

    刚上手小程序 时,习惯把this当成jquery中的$(this)来用,实际上这两个还是有差别的 在页面方法中调用其他方法,一般是用this.function(),直接调用小程序 的方法或函数则是用w ...

  6. 微信小程序踩坑之一[wx.request]请求模式

    最近在做小程序时,使用wx.request()方法请求时, 当使传输string类型时,一定要声明method请求模式为post,否则会一直报错,而不声明时默认为get, 已填坑 =,= wx.req ...

  7. 小程序 ----踩坑 ---安卓iOS兼容等

    关于小程序一些小功能的代码都在这个GitHub上,感兴趣的可以去看看,https://github.com/huihuijiang/miniProgram目前有:列表左滑删除,拖拽浮标 一.小程序坑1 ...

  8. 微信小程序踩坑之前端问题处理篇

    近期完成了一个小程序,自己做的前后端开发.真是惨哭我了o(╥﹏╥)o,下面几点希望大家可以避雷. 首先,想先介绍一下我遇到问题的解决思路: 1.先在postman调试接口,看数据获取是否正常, 2.在 ...

  9. 微信小程序踩坑之获取手机号

    最近在开发小程序遇到这样一个问题, 在用户点击授权后去解密手机号时会出现第一次失败,第二次成功的情况.研究了一段时间,终于找到比较合理的解决方案,在此记录并总结一下,希望可以帮助到大家. 需求描述 在 ...

随机推荐

  1. VMware:用Ubuntu创建一个新的虚拟机

    1)进入VMware,选择创建新虚拟机 2)安装ISO文件 3)各种名,密码 这里有可能出错: 原因是你输入的用户名和系统用户名重复了,修改一下就可以了 4)安装位置:这里可以是任意盘,但至少要有4G ...

  2. Vue 源码解读(11)—— render helper

    前言 上一篇文章 Vue 源码解读(10)-- 编译器 之 生成渲染函数 最后讲到组件更新时,需要先执行编译器生成的渲染函数得到组件的 vnode. 渲染函数之所以能生成 vnode 是通过其中的 _ ...

  3. JZ-071-把数字翻译成字符串

    把数字翻译成字符串 题目描述 给定一个数字,按照如下规则翻译成字符串:1 翻译成"a",2 翻译成"b"... 26 翻译成"z".一个数字 ...

  4. Linux-系统的延时和定时

    1.系统的延时任务 at 时间 时间后回车 就可以进入编辑了 完成后按ctrl+d提交 at 09:46 #设定任务的执行时间 at> touch /mnt/file{1..9} #任务的动作 ...

  5. tp6微信公众号开发者模式基础消息

    官方文档 https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Receiving_standard_messages ...

  6. laravel 框架登录 参考

    一.登录功能1.书写登录路由Route::view('login','login');2.书写登录页面  视图层<form action="{{route('loginDo')}}&q ...

  7. 分布式 PostgreSQL 集群(Citus)官方安装指南

    单节点 Citus Docker (Mac 与 Linux) Docker 镜像仅用于开发/测试目的, 并且尚未准备好用于生产用途. 您可以使用一个命令在 Docker 中启动 Citus: # st ...

  8. 昇腾CANN论文上榜CVPR,全景图像生成算法交互性再增强!

    摘要:近日,CVPR 2022放榜,基于CANN的AI论文<Interactive Image Synthesis with Panoptic Layout Generation>强势上榜 ...

  9. oracle 如何在表中有数据的情况下,修改表字段的类型或者增加表字段的长度

    场景:项目中某张表的字段长度不够用了,现在要增加其长度 分两种情况: 1.表中没有数据的情况,直接一条sql语句就能解决 alter     table    表名    modify(字段名   字 ...

  10. Superset安装部署操作

    目录 1.安装Miniconda 1.下载Miniconda 2.安装 3.开启一个新的shell窗口 4.设置新窗口不自动开启conda 2.创建Python3.7环境 1.配置国内镜像 2.常用命 ...