
1. 先搞清楚小程序到底在跑什么从零理解它的运行模型很多人第一次接触微信小程序开发脑子里蹦出来的第一个问题不是怎么写代码而是这玩意儿跟网页到底差在哪。我最早也是这么想的——不就是HTMLCSSJS换个马甲吗直到我把它真正跑起来才发现两者在运行模型上根本不是一回事。这个认知差直接决定了你后面写的每一行代码的写法。小程序的页面结构由四类文件组成.wxml负责结构、.wxss负责样式、.js负责逻辑、.json负责配置。看上去像网页那一套但它的渲染层和逻辑层是彻底分离的。视图层跑在WebView里逻辑层跑在独立的JS引擎里两者之间靠一套通信机制来回传消息。你在.js里改了数据不会像网页那样直接操作DOM而是通过setData把数据推给视图层由视图层自己去更新。提示视图层和逻辑层的分离是小程序一切性能问题和数据同步问题的根源。理解了这一点后面遇到的很多诡异现象都能自己解释。这个分离模型带来的第一个直接影响就是setData不能乱用。它是小程序里唯一的、从逻辑层到视图层的通信方式每次调用都要走一次跨线程序列化和传输。所以我见过不少项目一个列表滚动事件里疯狂调setData结果页面卡得像PPT。正确的做法是能合并的合并、能局部更新的走局部路径比如用>