数据驱动与DOM操作对比

1,118 阅读3分钟

数据驱动

持续+间隙性更新中...

  1. 写法上的不同
  2. 数据层与结构层关系
  3. 指定时机性
  4. 操作的形式不同
  5. 样式

写法的区别

  • DOM 操作是页面级别的,写的一般就是一个页面要承载的页面结构和数据。

  • 数据驱动是组件级别的(或者原子级别的)。实现了组件化,每一个组件只是完成一个页面中的一小部分,不同的组件可以整合起来,形成一个一个的应用。

数据层与结构层关系

  • DOM 操作是通过操作 DOM,修该 DOM 上面的数据,通过找到对应的结构层,做响应的 DOM 操作。(结构层与数据层未完全分离)
  • 数据驱动,数据往往"模板"的形式放在存在,需要更新的时候是直接用指定修改数据的方式,修该数据。不用于结构产生关系。(结构层与数据层分离)

操作时机性

DOM 操作以jQuery 最为使用广泛。jQuery 的执行时机一般都在,DOM 文档准备完毕了进行 DOM 操作。jQuery 封装了专门的方法。

// dom文档树加载完之后执行一个函数, ready 是 DOM树加载完成,不是onload的页面资源加载完成的
$(document).ready(function(){
   // 开始写 jQuery 代码...
});
// 语法糖
$(function(){
   // 开始写 jQuery 代码...
});

注意这里要区别,window.onloadDOM 加载完毕的区别, 前者是网页资源全部加载完毕之后执行,且之执行一次。后者是 DOM 结构加载完毕之后就能执行,且不止执行一次。

数据驱动中不需要太注意这些概念,数据驱动往往有自己的运行,在运行时钟已经准备好了操作需求。

操作的形式不同

DOM 操作是找到元素,然后进行指定的操作。在 jQuery 中就提供了大量的选择器,使用选择器选择指定的元素进行操作。

常用的选择方式:

  • id 选择器
  • class 选择器
  • 标签选择器
  • ...

jQuery 的选择器众多,这里只是说明问题, 选择器可以参照对应 CSS 选择器来理解。操作,其实就是操作元素,和对应的事件。jQuery 提供了链式操作。操作对应着事件,事件在浏览器中都是一样的,这一样是的是:不管是 DOM 操作还是数据驱动。只是写法不一样,最后做的事情行为是一样的。

  • 鼠标事件
  • 键盘事件
  • 表单事件
  • 文档窗口事件
  • ...

一句话,jQuery 中的 DOM 操作,操作和事件是 JavaScript 选择器语法糖的封装。通过事件行为,操作 DOM的变化。

数据驱动中,处理操作行为的方式是绑定到"模板"上,操作指定的方法单独的独立出来。然后在独立出来的函数中通过修改数据进行相应的操作

样式

在数据驱动中,往往借助了构建工具,可以提供强有力的样式书写能力,一般在数据驱动框架中往往,提供了动态的方式处理动态的 CSS 的类或者内联样式 Style。

在 DOM 操作中,我们也可以借助 JavaScript 的能力进行样式的变化,但是本质还是在直接操作 DOM 属性。