在Vue中不再和HTML直接进行交互了,而是将其挂载到DOM元素上,当数据发生变化的时候 数据变化->操作DOM->更改数据,但是操作DOM->更改数据是通过Vue内部 虚拟DOM 完成的,表现是数据驱动视图改变!
告诉vue实例,要将vdom中的数据渲染到哪一个视图上(DOM元素);
1)若是挂载点选择多个HTML元素,则只会对第一个元素
生效;
2)若是希望data中的数据能够对多个元素生效,可以将vue实例挂载到父元素上;
3)html和body不能是挂载点
,否则会报错;
若是没有设置挂载点
vue不知道将数据渲染到哪一个视图,数据无法渲染,将插值语法按照普通文本显示;
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Documenttitle>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js">script>
head>
<body>
<div id="app">
<p>{{person.name}}p>
<p>{{person.age}}p>
<p>{{person.area}}p>
div>
<script>
// [1]此时由于挂载点选择多个HTML元素,则只会对第一个元素生效;
const mv1=new Vue({
el:'p',
// 模型
data:{
person:{
name:'chaochao',
age:'20',
area:'中国'
}
}
})
// [2]没有设置挂载点,vue不知道将数据渲染到哪个视图上,将插值语法按照普通文本显示
const mv2=new Vue({
// 模型
data:{
person:{
name:'chaochao',
age:'20',
area:'中国'
}
}
})
script>
body>
html>
[1]结果:
chaochao
{{person.age}}
{{person.area}}
[2]结果:
{{person.name}}
{{person.age}}
{{person.area}}
$mount是vue实例化对象的一个方法,作用也是用来挂载对象的;
如果vue实例化对象没有设置挂载点,可以通过$mount来挂载
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<!-- 1.导入vue.js文件,导入文件之后得到一个全局的构造函数Vue -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<!-- 2.创见视图 -->
<div id="app">
<p>{{person.name}}</p>
<p>{{person.age}}</p>
<p>{{person.area}}</p>
</div>
<!-- 3.创建视图模型 -->
<script>
// [1]此时由于挂载点选择多个HTML元素,则只会对第一个元素生效;
const mv2=new Vue({
// 模型
data:{
person:{
name:'chaochao',
age:'20',
area:'中国'
}
}
})
console.log('mv2', mv2.$mount)
mv2.$mount('#app')
</script>
</body>
</html>
上述代码结果如下
和以下代码结果执行相同
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<!-- 1.导入vue.js文件,导入文件之后得到一个全局的构造函数Vue -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<!-- 2.创见视图 -->
<div id="app">
<p>{{person.name}}</p>
<p>{{person.age}}</p>
<p>{{person.area}}</p>
</div>
<!-- 3.创建视图模型 -->
<script>
// [1]此时由于挂载点选择多个HTML元素,则只会对第一个元素生效;
const mv2=new Vue({
el:'#app',
// 模型
data:{
person:{
name:'chaochao',
age:'20',
area:'中国'
}
}
})
</script>
</body>
</html>
通过上述流程图可以看出$el的优先级高于 $mount,若是同时出现以 $el为准;