spa 用 html 委托代理整个页面的点击事件是不是更加节约性能,是最佳实践吗?

发布于 2022-09-13 00:31:25 字数 119 浏览 23 评论 0

比如一个spa应用,里面的链接都是绑定的click事件,通过 history.pushState 更新页面,那我直接在html代理点击事件,再给每个链接添加一个自定义属性(如path=“/home”),这样算是比较好的办法么

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

橘香 2022-09-20 00:31:25

不建议这样做。

原因有两点:
1.如果代理整个html的点击事件,那么点击页面任意位置都会触发这个事件监听,你需要在这个事件监听里做判断。当一个用户在不停地点击页面空白处或者其他位置的时候,始终都会走这个监听,并且会走一遍判断,实际上是完全没有必要的。

2.当你后期增加其他元素的点击事件,但又不是和之前的链接事件相同的话,你这个就牵一发而动全身了,如果事件还有冒泡影响的话,你是不是还要考虑冒泡之类的问题?不好维护。

不如归去 2022-09-20 00:31:25

这种优化带来的好处可以忽略不计,反而不利于代码维护,比较好的做法是封装成一个组件,接受一个path的入参,router.push的逻辑写到组件里就好了

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文