• 14.Vue组件


    1.定义Vue组件

    什么是组件: 组件的出现,就是为了拆分Vue实例的代码量的,能够让我们以不同的组件,来划分不同的功能模块,将来我们需要什么样的功能,就可以去调用对应的组件即可;

     组件化和模块化的不同:
        + 模块化: 是从代码逻辑的角度进行划分的;方便代码分层开发,保证每个功能模块的职能单一;
        + 组件化: 是从UI界面的角度进行划分的;前端的组件化,方便UI组件的重用;

    2.全局组件定义的三种方式:

    创建组件的基本方式1: 

    创建语法:使用 Vue.extend 配合 Vue.component 方法

    //返回组件模板对象,然后将该对象真正注册为一个组件 
    Vue.component('mycom1', Vue.extend({ template: '
    <h3>这是使用 Vue.extend 创建的组件</h3>' }))

    代码实例:

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <meta http-equiv="X-UA-Compatible" content="ie=edge">
      <title>Document</title>
      <script src="./lib/vue-2.4.0.js"></script>
    </head>
    
    <body>
      <div id="app">
        <!-- 如果要使用组件,直接把组件的名称,以 HTML 标签的形式,引入到页面中即可 -->
        <mycom1></mycom1>
      </div>
    
      <script>
        // 1.1 使用 Vue.extend 来创建全局的Vue组件
        // var com1 = Vue.extend({
        //   template: '<h3>这是使用 Vue.extend 创建的组件</h3>' // 通过 template 属性,指定了组件要展示的HTML结构
        // })
        // 1.2 使用 Vue.component('组件的名称', 创建出来的组件模板对象com1)
        // Vue.component('myCom1', com1)
        // 如果使用 Vue.component 定义全局组件的时候,组件名称使用了驼峰命名,则在引用组件的时候,
        // 需要把大写的驼峰改为小写的字母,同时两个单词之间使用 - 连接;<my-com1></my-com1>
        
        // 如果不使用驼峰,则直接拿名称来使用即可;
        // Vue.component('mycom1', com1)
        //---------------------------------------------------------------------------------
        // Vue.component 
        // 第一个参数:组件的名称:将来在引用组件的时候,就是一个"标签形式"来引入
        // 第二个参数: Vue.extend 创建的组件  ,其中 template 就是组件将来要展示的HTML内容
        Vue.component('mycom1', Vue.extend({
          template: '<h3>这是使用 Vue.extend 创建的组件</h3>'
        }))
    
    
        // 创建Vue实例,得到ViewModel
        var vm = new Vue({
          el: '#app',
          data: {},
          methods: {}
        });
      </script>
    </body>
    </html>
    View Code

    创建组件的基本方式2: 

    创建语法:直接使用 Vue.component 方法

    Vue.component('mycom2', {
          template: '<div><h3>这是直接使用 Vue.component 创建出来的组件</h3><span>123</span></div>'
    })

    代码实例:

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <meta http-equiv="X-UA-Compatible" content="ie=edge">
      <title>Document</title>
      <script src="./lib/vue-2.4.0.js"></script>
    </head>
    
    <body>
      <div id="app">
        <!-- 还是使用 标签形式,引入自己的组件 -->
        <mycom2></mycom2>
      </div>
    
      <script>
        // 注意:不论是哪种方式创建出来的组件,组件的 template 属性指向的模板内容,必须有且只能有唯一的一个根元素
        Vue.component('mycom2', {
          template: '<div><h3>这是直接使用 Vue.component 创建出来的组件</h3><span>123</span></div>'
        })
    
        // 创建 Vue 实例,得到 ViewModel
        var vm = new Vue({
          el: '#app',
          data: {},
          methods: {}
        });
      </script>
    </body>
    </html>
    View Code

    创建组件的基本方式3: 

    创建语法:

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <meta http-equiv="X-UA-Compatible" content="ie=edge">
      <title>Document</title>
      <script src="./lib/vue-2.4.0.js"></script>
    </head>
    <body>
      <div id="app">
        <mycom3></mycom3>
      </div>
    
      <div id="app2">
        <mycom3></mycom3>
        <login></login>
      </div>
    
      <!-- 在被控制的 #app 外面,使用 template 元素,定义组件的HTML模板结构  -->
      <template id="tmpl">
        <div>
          <h1>这是通过 template 元素,在外部定义的组件结构,这个方式,有代码的只能提示和高亮</h1>
          <h4>好用,不错!</h4>
        </div>
      </template>
    
      <template id="tmpl2">
        <h1>这是私有的 login 组件</h1>
      </template>
    
      <script>
        Vue.component('mycom3', {
          template: '#tmpl'
        })
    
        // 创建 Vue 实例,得到 ViewModel
        var vm = new Vue({
          el: '#app',
          data: {},
          methods: {}
        });
    
    
        var vm2 = new Vue({
          el: '#app2',
          data: {},
          methods: {},
          filters: {},
          directives: {},
          components: { // 定义实例内部私有组件的
            //组件名称
            login: {
              template: '#tmpl2'
            }
          },
          beforeCreate() { },
          created() { },
          beforeMount() { },
          mounted() { },
          beforeUpdate() { },
          updated() { },
          beforeDestroy() { },
          destroyed() { }
        })
      </script>
    </body>
    </html>
    View Code
  • 相关阅读:
    源文件声明规则
    JavaBean
    ffmpeg错误:Invalid UE golomb code
    利用android studio 生成 JNI需要的动态库so文件
    Error: Your project contains C++ files but it is not using a supported native build system.
    Andriod studio 目录结构
    ubuntu 16.04扩充root 分区
    错误: H.264 bitstream malformed, no startcode found,
    CIDR
    Qt之QComboBox定制(二)
  • 原文地址:https://www.cnblogs.com/yaboya/p/10259199.html
Copyright © 2020-2023  润新知