Vue笔记_挂载点(el+$mount)

el挂载点

​ 在Vue中不再和HTML直接进行交互了,而是将其挂载到DOM元素上,当数据发生变化的时候 数据变化->操作DOM->更改数据,但是操作DOM->更改数据是通过Vue内部 虚拟DOM 完成的,表现是数据驱动视图改变!

作用

告诉vue实例,要将vdom中的数据渲染到哪一个视图上(DOM元素);

参数
  • 1)可以传入一个 HTMLElement 实例
    • 但是这样还需要获取DOM元素,没有必要;
    • 使用vue就是要避免dom操作;
  • 2)可以传入css选择器;
    • 标签选择器
    • 类选择器
    • id选择器(推荐使用)
      • id选择器,保证HTML标签唯一性;
注意点
  • 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>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 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

$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的优先级高于 $mount,若是同时出现以 $el为准;

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值