javascript - 在 DOM 上存放数据是否是一个好的解决方案?
PHP中文网
PHP中文网 2017-04-10 14:43:41
[JavaScript讨论组]

平时会看到这样的代码,由于本地没有 Model,需要存取的数据就只好放在DOM上,最常见的莫过于列表项了:

data-name 作为 JS-Hook(钩子)可以很方便的被JS取到。

var name = $('.list-item').attr('data-name');

但是,在大谈 MV 应该分开的今天,在 DOM 上存放数据:
这是否仍然是一个好方法?
该如何理解?
是否有其无可替代的优势?

PHP中文网
PHP中文网

认证0级讲师

全部回复(8)
PHP中文网

优势我觉得就是在逻辑比较简单时,可以直接塞到dom上;
如果dom被复制了,这部分数据也就复制过去了;

如果复杂的话,还是自己想个合适的数据结构来存,这样效率高些;操作dom的开销还是比直接操作JS对象高的。

PHP中文网

个人的建议是结构化数据在DOM上存放数据的“主键”,具体数据还是放在JS变量里,通过“主键”去捞对应的数据

这里”主键“可以是数据库主键,也可以是临时的,view里面的idx

PHP中文网

我有时候也会这么干,Bootstrap也有这么干过。这样只能存放文本格式的数据。

jQuery提供了data()函数来处理这种事,兴许更合适。它自己实现了某种缓存机制,可以直接存放对象。

大家讲道理

我认为这个不是存放不存放数据的问题,如果是存放数据可以讨论下cookies和webstorage这些
这完全是一种编码习惯,如果你想让框架使用者完全用html的标签控制一个组件的参数,那么写成data-你的属性名 这种未尝不可
当然如果在标签里写很复杂的东西,比如涉及引号的字符串,还是源生js比较好
至于性能 只要不是太复杂的渲染和回流 近代浏览器下这点开销可以忽略不计了吧 前提是不要拿这个attribute当选择器就行

天蓬老师

只要页面不刷新内存里的东西都还在,频繁操作DOM不好

PHP中文网

只能说是个解决方案,哪能加个“好”字
存放数据现代浏览器有专门的功能,html5 的 indexdb 接口就是做这事的

迷茫

赞成 lvming6816077

伊谢尔伦

个人习惯问题,我就不喜欢把数据库挂在dom上,纯粹的mvc才是好的。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号