Vue教程37--组件详解(一)

81 阅读1分钟

注册组件的基本步骤

  • 组件的使用分成三个步骤:

    • 创建组件构造器
    • 注册组件
    • 使用组件

image-20210821163351678.png

  • 我们来看看通过代码如何注册组件

image-20210821163521597.png

 <!DOCTYPE html>
 <html lang="en">
 <head>
     <meta charset="UTF-8">
     <title>Title</title>
 </head>
 <body>
 ​
 <div id="app">
     <!--3.组件的使用-->
     <my_cpn></my_cpn>
 </div>
 ​
 <script src="../vue.js"></script>
 ​
 <script>
     //ES6的``的部分是可换行字符串
 ​
     //1.创建组件构造器对象
     const cpnC = Vue.extend({
         template:`
             <div>
                 <h2>我是标题</h2>
                 <p>我是内容 哈哈哈哈哈</p>
                 <p>我是内容2 呵呵呵呵呵呵呵呵</p>
             </div>`
     })
 ​
 ​
     //2.注册组件
     //组件的名称,我们如何引用这个组件
     Vue.component("my_cpn",cpnC)
 ​
 ​
     const app = new Vue({
         el:"#app",
         data:{
             message:"hello world"
         }
     })
 </script>
 </body>
 </html>

效果展示

企业微信截图_20210821165051.png

  • 查看运行结果:

    • 和直接使用一个div看起来并没有什么区别
    • 但是我们可以设想,如果很多地方都要显示这样的信息,我们是不是就可以直接使用<my-cpn></my-cpn>来完成呢

注册组件步骤解析

  • 这里的步骤都代表什么含义呢?
  • 1.Vue.extend()
    • 调用Vue.extend()创建的是一个组件构造器
    • 通常在创建组件构造器时,传入template代表我们自定义组件的模板
    • 该模板就是在使用到组件的地方,要显示的HTML代码
    • 事实上,这种写法在Vue2.x的文档中几乎已经看不到了,它会直接使用下面我们会讲到的语法糖,但是在很多资料还是会提到这种方式,而且这种方式是学习后面方式的基础
  • 2.Vue.component()
    • 调用Vue.component()是将刚才的组件构造器注册为一个组件,并且给它起一个组件的标签名称
    • 所以需要传递两个参数:
      • 1、注册组件的标签名
      • 2、组件构造器
  • 3.组件必须挂载在某个Vue实例下,否则它不会生效
    • 我们来看下面我使用了三次
    • 而第三次其实并没有生效:

image-20210821165457359.png

 <!DOCTYPE html>
 <html lang="en">
 <head>
     <meta charset="UTF-8">
     <title>Title</title>
 </head>
 <body>
 ​
 <div id="app">
     <!--3.组件的使用-->
     <my_cpn></my_cpn>
     <div>
         <my_cpn></my_cpn>
     </div>
     <my_cpn></my_cpn>
 </div>
 ​
 <script src="../vue.js"></script>
 ​
 <script>
     //ES6的``的部分是可换行字符串
 ​
 ​
     //1.创建组件构造器对象
     const cpnC = Vue.extend({
         template:`
             <div>
                 <h2>我是标题</h2>
                 <p>我是内容 哈哈哈哈哈</p>
                 <p>我是内容2 呵呵呵呵呵呵呵呵</p>
             </div>`
     })
 ​
 ​
     //2.注册组件
     //组件的名称,我们如何引用这个组件
     Vue.component("my_cpn",cpnC)
 ​
 ​
     const app = new Vue({
         el:"#app",
         data:{
             message:"hello world"
         }
     })
 </script>
 </body>
 </html>

效果展示:

企业微信截图_20210821165923.png