存储信息i元素,一个很好的做法



假设我有一个电影列表,使用Javascript和Jquery可以通过html控件更改电影的标题、评级和成本。这些变量的原始值将在加载页面时给出。到目前为止,我将数据加载到如下元素中:

    <div class="movie0" data-rating="320" data-name="Movie-Name No. 1" data-cost="26>
            <img src="movie1.png"/>
    </div>
    <div class="movie1" data-rating="110" data-name="Movie-Name No. 2" data-cost="18">
            <img src="movie2.png"/>
    </div>
    <div class="movie2" data-rating="315" data-name="Movie-Name No. 3" data-cost="25">
            <img src="movie3.png"/>
    </div>

html控件使用JQuery的.data()函数更改数据。

现在开始提问。最好将信息加载到JSON对象中,然后使用ID(或数据属性)与JSON对象中的索引相关。Html控件不会更改元素,而是会更改与元素对应的JSON对象中的索引。什么更好?如果我只关心评级变量,正确的方法会有所不同吗?

编辑:我之所以提出这个问题,是因为我读过并听说在DOM中存储和更改信息的效率很低。

这里没有"正确"的答案。

在HTML对象上使用元数据的优点是:

  1. 数据可以由非开发人员通过简单地修改HTML上的属性来维护
  2. 非开发人员只需更改HTML即可添加、删除或编辑项目
  3. 一个单独的电影项目在一个地方自我描述。您不必同时维护HTML和相应的代码

使用预先构建的javascript对象的优点是:

  1. 可能更快的性能(尽管不清楚这里的性能差异是否会引起注意)
  2. 在javascript对象中,从javascript代码修改数据可能更简单

我不知道你到底听说过什么"在DOM中存储和更改信息效率低下"。这实际上完全取决于你在做什么,你在更改什么类型的数据,以及性能在任何方面的重要性。以导致重新发布和重新绘制的方式修改DOM是非常缓慢的。但是,从DOM中的HTML对象中读取一段元数据不会导致重新发布或重新绘制。

如果您有一个对性能非常敏感的紧密循环,那么您可能应该在javascript对象中使用数据,而不是在DOM对象中使用属性。但是,读取DOM属性的性能通常不是一个明显的问题,因此可读性和可维护性等问题通常更重要,并将推动决策。


附言:您没有恰当地使用术语JSON。我想你要问的是一个"Javascript对象"或"Javascript文字",它是如何在Javascript代码中静态声明Javascript变量的。JSON是一种文本格式,用于以纯字符串格式指定或交换javascript数据。必须对JSON进行解析,才能将其转换为实际的javascript变量。

最新更新