平时会看到这样的代码,由于本地没有 Model,需要存取的数据就只好放在DOM上,最常见的莫过于列表项了:
data-name 作为 JS-Hook(钩子)可以很方便的被JS取到。
var name = $('.list-item').attr('data-name');
但是,在大谈 MV 应该分开的今天,在 DOM 上存放数据:
这是否仍然是一个好方法?
该如何理解?
是否有其无可替代的优势?
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
优势我觉得就是在逻辑比较简单时,可以直接塞到dom上;
如果dom被复制了,这部分数据也就复制过去了;
如果复杂的话,还是自己想个合适的数据结构来存,这样效率高些;操作dom的开销还是比直接操作JS对象高的。
个人的建议是结构化数据在DOM上存放数据的“主键”,具体数据还是放在JS变量里,通过“主键”去捞对应的数据
这里”主键“可以是数据库主键,也可以是临时的,view里面的idx
我有时候也会这么干,Bootstrap也有这么干过。这样只能存放文本格式的数据。
jQuery提供了data()函数来处理这种事,兴许更合适。它自己实现了某种缓存机制,可以直接存放对象。
我认为这个不是存放不存放数据的问题,如果是存放数据可以讨论下cookies和webstorage这些
这完全是一种编码习惯,如果你想让框架使用者完全用html的标签控制一个组件的参数,那么写成data-你的属性名 这种未尝不可
当然如果在标签里写很复杂的东西,比如涉及引号的字符串,还是源生js比较好
至于性能 只要不是太复杂的渲染和回流 近代浏览器下这点开销可以忽略不计了吧 前提是不要拿这个attribute当选择器就行
只要页面不刷新内存里的东西都还在,频繁操作DOM不好
只能说是个解决方案,哪能加个“好”字
存放数据现代浏览器有专门的功能,html5 的 indexdb 接口就是做这事的
赞成 lvming6816077
个人习惯问题,我就不喜欢把数据库挂在dom上,纯粹的mvc才是好的。