当前位置: 首页 > ops >正文

Vue 中el和data的两种写法

el的写法

在 Vue 中,el 是用于指定 Vue 实例挂载到哪一个 DOM 元素上的配置项。根据使用方式的不同,el 有两种典型写法,分别用于不同的场景(Vue 2 和 Vue 3)。

✅ 第一种:在实例创建时通过 el 配置项指定

这种写法是 Vue 2 中最常见的方式。

// Vue 2 写法
new Vue({el: '#app', // 指定挂载点data: {message: 'Hello Vue!'}
})<div id="app">{{ message }}
</div>

这种方式在创建 Vue 实例时立即挂载。

✅ 第二种:使用 $mount() 手动挂载

适合在某些条件满足后再进行挂载,或用于更复杂的初始化逻辑。

// Vue 2
const vm = new Vue({data: {message: 'Hello Vue!'}
})vm.$mount('#app')

这种方式将挂载与实例创建分离,更灵活,适用于:

  • SSR(服务端渲染)
  • 延迟挂载
  • 动态选择挂载点

🧠 补充:Vue 3 中不再使用 el,而是使用 createApp().mount()

// Vue 3 推荐写法
import { createApp } from 'vue'
import App from './App.vue'createApp(App).mount('#app')

这种方式本质上等价于 Vue 2 中 el + new Vue() 的组合,只是写法更模块化,更适合现代项目结构。

总结:

写法用于 Vue 版本说明
el: ‘#app’Vue 2简单场景下的快捷挂载
$mount(‘#app’)Vue 2手动控制挂载时机
app.mount(‘#app’)Vue 3Vue 3 的标准挂载方式

实例

🌱 Vue 2 示例

✅ 方式一:使用 el 配置项
<!-- index.html -->
<div id="app"><p>{{ message }}</p>
</div><script src="https://cdn.jsdelivr.net/npm/vue@2"></script>
<script>new Vue({el: '#app',data: {message: '使用 el 挂载'}})
✅ 方式二:使用 $mount() 手动挂载
<!-- index.html -->
<div id="app"><p>{{ message }}</p>
</div><script src="https://cdn.jsdelivr.net/npm/vue@2"></script>
<script>const app = new Vue({data: {message: '使用 $mount 手动挂载'}})// 某些逻辑后再挂载setTimeout(() => {app.$mount('#app')}, 1000)
</script>

🌿 Vue 3 示例

✅ 推荐方式:createApp().mount()

<!-- index.html -->
<div id="app"></div><script type="module">import { createApp, ref } from 'https://unpkg.com/vue@3/dist/vue.esm-browser.js'const App = {setup() {const message = ref('Vue 3 挂载')return { message }},template: `<p>{{ message }}</p>`}// 方式一:立即挂载createApp(App).mount('#app')// 方式二:延迟挂载(相当于 Vue 2 的 $mount)// const app = createApp(App)// setTimeout(() => {//   app.mount('#app')// }, 1000)
</script>

data两种写法

在 Vue 中,data 有两种写法,取决于你是使用 Vue 2 的 Options API,还是使用 Vue 3 的 Composition API。就算只考虑 Vue 2,本身也有“对象”和“函数”两种形式,我们来分别讲清楚。

✅ 在 Vue 2 的 Options API 中

🔸 写法一:data 是一个函数(推荐写法,特别是组件)

export default {data() {return {message: 'Hello Vue'}}
}

📌 推荐写成函数,尤其在组件中是必须的。因为多个组件实例共享一个 data 对象会导致数据污染,函数写法能确保每个实例都有独立的数据副本。

🔸 写法二:data 是一个对象(仅限于 new Vue 根实例)

new Vue({data: {message: '根实例可以用对象'}
})

✅ 在 Vue 3 的 Composition API 中

Vue 3 推荐使用

<script setup>
import { ref } from 'vue'const message = ref('Hello Vue 3')
</script><template><p>{{ message }}</p>
</template>

✅ 总结对比

使用场景写法是否推荐说明
Vue 2 根实例data: {}✅ 可用仅限于 new Vue(…)
Vue 2 组件data() { return {} }✅ 推荐避免组件之间共享同一数据对象
Vue 3使用 ref() / reactive()✅ 推荐完全替代 data
http://www.xdnf.cn/news/5386.html

相关文章:

  • 基于神经网络的无源雷达测向系统仿真实现
  • Transformer KV缓存优化(MHA、MQA、GQA、MLA,参考:DeepSeek-V2)
  • GitHub 趋势日报 (2025年05月10日)
  • 【音视频工具】MP4BOX使用
  • GO语言内存管理结构
  • 远程服务器pycharm运行tensorboard显示训练轮次图
  • 【多模态】IMAGEBIND论文阅读
  • 数据分析基础:需要掌握的入门知识
  • python 实现sha加密
  • 数字电子技术基础(五十七)——边沿触发器
  • 用统计零花钱的例子解释:Shuffle 是啥?
  • 【锂电池剩余寿命预测】SVM支持向量机锂电池剩余寿命预测(Pytorch完整源码和数据)
  • 2025-05-11 项目绩效域记忆逻辑管理
  • 保姆级教程|YOLO11改进】【卷积篇】【4】使用RFAConv感受野注意力卷积,重塑空间特征提取,助力高效提点
  • httpclient请求出现403
  • 接口在函数参数和对象类型中的应用
  • C——猜数字游戏
  • Linux——MySQL内置函数与复合查询
  • 【SaaS灾难恢复】跨云备份与快速重建机制
  • FastAPI实现JWT校验的完整指南
  • C++笔记6:数字字面量后缀和前缀总结
  • YOLO-World:基于YOLOv8的开放词汇目标检测
  • 2050年的世界是怎样的?
  • Windows系统更新一键禁用:WindowsUpdateBlocker轻量级工具推荐
  • 【高数上册笔记篇02】:数列与函数极限
  • vue中理解MVVM
  • 12、电子电路设计与PCB布局组件 (概念) - /设计与仿真组件/pcb-layout-tool
  • C语言和Python在负数取余运算(%)上的差异
  • AJAX原理
  • python实战项目69:基于Python爬虫的链家二手房数据采集方法研究