我真是服了,昨天又一个兄弟过来问我,说照着教程写的交互页面怎么在手机上点不动,在Chrome上好好的,一到Safari就原地去世。我一看代码,好家伙,全是addEventListener绑死在一堆动态生成的子元素上,事件委托是压根没听过啊!这玩意儿就跟你买了个顶级域名却只放个纯静态页面一样,纯属浪费!
做交互,第一步根本不是学什么花里胡哨的Vue/React框架(虽然它们真香),是特么先把原生JS里的DOM操作、事件流(冒泡捕获!)、还有那个能把人逼疯的‘this’指向给刻进DNA里!我当初就是不信邪,直接上框架,结果项目出了个诡异bug,我愣是盯着Chrome调试器里那个‘undefined’看了俩小时,抽了半包烟才想起来是异步加载的数据还没回来,组件就已经开始渲染了——页面看起来一切正常,就是所有按钮点了都没反应,用户体验堪比看幻灯片。血压直接拉满。
还有,别以为响应式就是加个Bootstrap完事儿。你真的用真机,尤其是那些老旧安卓机,去测过你的点击区域、滑动效果和动画性能吗?我有个血泪史,给客户做了个酷炫的视差滚动首页,在我这顶配MacBook上流畅得像德芙,结果交付后客户用他三千块的安卓机一打开,卡得他妈都不认识,差点尾款都收不回来。移动端交互,性能优化比你想象中重要一万倍,一个没处理好CSS的‘will-change’属性或者用了太多耗性能的滤镜,直接送你一个‘网页无响应’的弹窗。
最后,也是最容易被新手忽略的:可访问性(A11y)。你的酷炫按钮,用键盘Tab键能聚焦吗?屏幕阅读器读出来是啥?别光顾着自己爽,想想那些不方便用鼠标的人。这不仅仅是道德问题,搞不好还是法律问题(某些国家有要求)。哎,说到这我又想起来,上次为了修复一个ARIA标签的警告,又折腾到凌晨三点。
所以,真想少走弯路,先别急着造火箭。从最土的‘点击按钮改变文字颜色’开始,把每一个交互步骤背后浏览器到底干了啥(事件循环、渲染管线)弄明白。然后,去MDN Web Docs把相关文档啃一遍,比你看一百个零散教程都管用。等你被原生JS虐得差不多了,再拥抱框架,你会回来谢我的。不然?不然你就等着天天在Stack Overflow上复制粘贴报错信息吧,日子长着呢(点烟苦笑)。
