是否可以使用数据属性来存储Javascript' state'

时间:2012-01-05 15:31:44

标签: javascript

我经常使用数据属性来存储我无法进行语义标记的配置,以便JS以某种方式对这些元素进行操作。现在这适用于服务器呈现它们的页面(尽职尽责地填写数据属性)。

但是,我已经看到了javascript写入数据属性以保存稍后可能需要的数据的示例。例如,将一些数据发布到服务器。如果它无法发送,则将数据存储在数据属性中并提供重试按钮。单击重试按钮时,它会找到相应的数据属性并再次尝试。

对我来说这感觉很脏而且很贵,因为我必须深入研究DOM然后挖掘出这些数据,但这对我来说也很容易。

我可以看到两种替代方法:

可能要么利用匿名Javascript函数的范围来保持对原始数据位的处理,尽管这可能是不可能的,并且可能导致太多“魔法”。

二,保持一个物体躺在周围,跟踪这些事情。不是向DOM询问某个数据属性的内容,而只是查询我的对象。

我想我的假设是DOM不应该用于存储任意状态位,而应该使用具有单一目的的更简单的对象。最重要的是,我假设访问DOM比更简单但特定的对象更昂贵,以便跟踪事物。

其他人对于绩效,清晰度和易执行性有何看法?

1 个答案:

答案 0 :(得分:0)

你的假设非常好!虽然它是允许且完全有效的,但将数据存储在DOM中并不是一个好习惯。当然,如果你只有一个输入字段就可以了,但是,随着应用程序的增长,你最终会乱七八糟地混乱数据......正如你所提到的,DOM很慢。

应用程序越大,分离您的兴趣就越重要:

DOM事件 - >触发JS函数 - >访问数据(JS对象,JS API或AJAX API) - >处理结果(API调用或DOM更改)

我非常喜欢创建用于访问JS数据的API,因此您还可以在添加,删除,获取和更改时触发新事件。