返回

Vue Front-end Pitfalls (Part 1): DOM Elements

前端





## Vue 前端踩坑日常(一)之 DOM 元素

DOM 元素是前端开发的基础,也是 Vue 开发中不可避免要面对的问题。本文将分享一些我在 Vue 开发中遇到的 DOM 元素相关问题,希望能给大家带来一些启发和帮助。

### 获取 DOM 元素

传统获取 DOM 元素的方法 相信大家获取 DOM 元素都不陌生。都是从 html 一路披荆斩棘到了 Vue3 的。还是重新回顾一下在 JS 中获取 DOM 元素的方法吧。

// 通过 getElementById 获取元素
const el = document.getElementById('app');

// 通过 getElementsByClassName 获取元素
const els = document.getElementsByClassName('item');

// 通过 querySelector 获取元素
const el = document.querySelector('.item');

// 通过 querySelectorAll 获取元素
const els = document.querySelectorAll('.item');


这些方法在 Vue 中依然可以使用,但是 Vue 还提供了一些更方便的方法来获取 DOM 元素。

#### ref

ref 是 Vue 中获取 DOM 元素最常用的方式,它允许我们在组件中通过 ref 属性来获取 DOM 元素。


ref 获取的 DOM 元素是通过 `this.$refs.el` 来访问的,其中 `el` 是我们在组件中设置的 ref 属性值。

#### v-el

v-el 指令也可以用于获取 DOM 元素,它的用法与 ref 类似,但是不需要在组件中定义 ref 属性。


v-el 指令获取的 DOM 元素是通过 `this.$el` 来访问的。

#### 比较

ref 和 v-el 指令都可以用于获取 DOM 元素,但是它们之间还是有一些区别的。

- ref 是在组件中定义的,而 v-el 是在模板中定义的。
- ref 获取的 DOM 元素是通过 `this.$refs.el` 来访问的,而 v-el 指令获取的 DOM 元素是通过 `this.$el` 来访问的。
- ref 可以获取组件根元素,而 v-el 指令只能获取当前元素。

### 操作 DOM 元素

获取到 DOM 元素后,我们就可以对其进行操作了。Vue 提供了许多操作 DOM 元素的方法,这些方法可以帮助我们轻松地修改 DOM 元素的属性、样式和内容。

#### 修改属性

可以使用 `setAttribute()` 方法来修改 DOM 元素的属性。

el.setAttribute('id', 'app');


#### 修改样式

可以使用 `style` 属性来修改 DOM 元素的样式。

el.style.color = 'red';


#### 修改内容

可以使用 `innerHTML` 或 `textContent` 属性来修改 DOM 元素的内容。

el.innerHTML = 'Hello World';
el.textContent = 'Hello World';


### 监听 DOM 事件

Vue 提供了 `addEventListener()` 方法来监听 DOM 事件。

el.addEventListener('click', function() {
console.log('元素被点击了');
});


### 移除 DOM 元素

可以使用 `remove()` 方法来移除 DOM 元素。

el.remove();


### 性能优化

在 Vue 开发中,也需要考虑 DOM 元素的性能优化问题。以下是一些常见的优化技巧:

- 避免频繁操作 DOM 元素。
- 使用 CSS 来修改 DOM 元素的样式,而不是使用 JavaScript。
- 使用虚拟 DOM 来提高渲染性能。
- 使用组件来复用 DOM 元素。

### 结语

以上就是我在 Vue 开发中遇到的 DOM 元素相关问题以及解决方法的分享。希望对大家有所帮助。