微信小程序的那套页面逻辑,确实比较low,不知道是不是为了兼容lowB。
他有个统一的页面注册,也就是page()方法,页面要用到的数据、方法都丢在page()里面,很像VUE2的那套声明式逻辑。
但是数据又不是VUE那样的绑定之后自动差量更新,而是先把视图层和逻辑层的相关数据注册进page.data对象里面,然后用setData()来修改逻辑层数据并映射到视图层。
等于说逻辑层用this.data.someValue = xxx
是没办法修改视图层的{ someValue }模板的绑定/映射的。
得用setData({ someValue: xxx })
才能改。
估计page.data里面也不支持自动默认的getter和setter方法,页面注册之后只能用setData()了,没试过。
相当于自动挡变手动挡了,我不理解这是为啥,你说是为了提高细粒度降低内存消耗吧,我接手的项目代码就是一坨屎,还不如VUE那套呢。
还有个问题,就是微信小程序自己的API,好多异步语法,回调就很反人类。
this.xxx是找不到xxx的,比如this.data.xxx经常找不到注册在page里的data数据。
因为原方法是page调用,毕竟方法、参数都在page()里注册了,所以能用this.xxx来调用方法或者变量,但是回调方法是框架调用、引擎调用,this不再指向page了,我去。
我接手的项目,频繁的在方法里用const that = this
,然后回调用that.xxx,我真的
总之微信小程序这套,感觉挺low的。
还有个疑惑就是,页面的静态常量可以放在page()外面,反正不用改,也不用映射绑定去视图层。
就是不知道这些静态常量能不能自动销毁,会不会绕过页面内存回收机制,最后造成内存泄漏。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。