• Vue组件系统


    目录:

      Vue组件系统之全局组件的注册

      Vue组件系统之组件的复用

      Vue组价系统之局部组件的注册

      Vue组件系统之父子组件的通信

      Vue组件系统之子父组件的通信

      Vue组件系统之混入(mixin)

      Vue组件系统之插槽<slot></slot>

      Vue组件系统之具名插槽

       做专业的程序员看专业的官方文档  

     

    Vue组件系统之全局组件的注册

    <div id='app'>
    <global-component></global-component>
    </div>

    <script>
       // 注册
       Vue.component(
           // 第一个是组件名称 第二个object
           "global-component", {
               // 组件内容 抱一个div-单个根元素
               template: `<div><h3>{{ db }}</h3></div>`,
               // data必须是函数
               data(){
                   // return中写数据
                   return {
                       db: 'hello',
                  }
              }
          }
      );
       
       new Vue({
           el: '#app',
           // template: `<global-component></global-component>`
      })
    </script>
    <div id='app'>

    </div>

    <script>
       // 注册组件
       Vue.component(
           // 第一个是组件名称 第二个object
           "global-component", {
               // 组件内容 抱一个div-单个根元素,包在app这个div中
               template: `<div><h3>{{ db }}</h3></div>`,
               // data必须是函数
               data(){
                   // return中写数据
                   return {
                       db: 'hello',
                  }
              }
          }
      );
       
       new Vue({
           el: '#app',
           // 根元素会替换div
           template: `<global-component></global-component>`
      })
    </script>

    全局组件

    // 总结
    Vue.component(
          // 第一个是组件名称 第二个object
          "global-component", {
              // 组件内容 抱一个div-单个根元素,包在app这个div中
              template: `<div><h3>{{ db }}</h3></div>`,
              // data必须是函数
              data(){
                  // return中写数据
                  return {
                      db: 'hello',
                  },
    computed: {},
    watch: {},
    methods: {},
              }
          }
      );

    new Vue({
          el: '#app',
          // 根元素会替换div
          template: `<global-component></global-component>`
      })

    // data 必须是函数
    // 没有属性

    组件系统之组件的复用

    <div id='app'>
    <global-component></global-component>
       <global-component></global-component>
       <global-component></global-component>
    </div>

    <script>
       // 注册
       Vue.component(
           // 第一个是组件名称 第二个object
           "global-component", {
               // 组件内容 抱一个div-单个根元素
               template: `<div><h3>{{ db }}</h3></div>`,
               // data必须是函数
               data(){
                   // return中写数据
                   return {
                       db: 'hello',
                  }
              }
          }
      );
       
       new Vue({
           el: '#app',
           
      })
    </script>

    组价系统之局部组件的注册

    <div id='app'>
    <app-header></app-header>
     
    </div>

    <script>
       let Header = {
        template: `<div><h3>{{ db }}</h3></div>`,
           data(){
               return {
                       db: 'hello',
                  }
          },
           computed: {},
      };
       
       new Vue({
           el: '#app',
           template: `<app-header></app-header>`,
           components: {
               'app-header': Header
          }
      })
    </script>
    <div id='app'>
       <!--<App></App>-->  
    </div>

    <script>
       let Header = {
        template: `<div><h3>{{ db }}</h3></div>`,
           data(){
               return {
                       db: 'hello',
                  }
          },
           computed: {},
           // ...
      };
       // 在入口组件中注册写的局部组件
       let App = {
           template: `
    <div>
      <app-header></app-header>
      </div>
    `,
           components: {
               'app-header': Header
          },
           // 组件的私有数据
           data(){},
      };
       // 根实例
       new Vue({
           el: '#app',
           // 作为根被渲染
           template: `<App></App>`,
           components: {
               // App:App,
               App,
          }
      })
    </script>

    局部组件

    - 总结

    创建组件
    创建局部组件,起始就是创建一个JavaScript object
      let Header = {
        template: `<div><h3>{{ db }}</h3></div>`,
          data(){
              return {
                      db: 'hello',
                  }
          },
          computed: {},
      };
    注册组件

      new Vue({
          el: '#app',
          template: `<app-header></app-header>`,
          components: {
              'app-header': Header
          }
      })

    组件可以嵌套使用

     

    Vue组件系统之父子组件的通信

    <div id='app'>
     
    </div>

    <script>
       // 子
       let Header = {
        template: `<div><h3>{{ db }}</h3><h3>{{ fData }}</h3><</div>`,
           data(){
               return {
                       db: 'hello',
                  }
          },
           // 接收父亲传来的数据
           props:['fData'],
           computed: {},
           // ...
      };
       // 在入口组件中注册写的局部组件
       // 父
       let App = {
           template: `
    <div>
      <app-header v-bind:fData="fatherData"></app-header>
      </div>
    `,
           components: {
               'app-header': Header
          },
           // 组件的私有数据
           data(){
               return {fatherData: 0,}
          },
      };
       // 根实例
       new Vue({
           el: '#app',
           // 作为根被渲染
           template: `<App></App>`,
           components: {
               // App:App,
               App,
          }
      })
    </script>

    Vue组件系统之子父组件的通信

    <div id='app'>
    </dic>

    <script>
       // 子
       let Header = {
        template: `<div>
    <button @click='sonClick'>点击改变字体大小</button>
      </div>`,
           methods: {
               sonClick: function(){
                   // 儿子的的行为传给父亲
                   this.$emit("change-size", 0.1)
              }  
          },
           computed: {},
           // ...
      };
       // 父
       let App = {
           template: `
    <div>
      <span :style="{ fontSize: postFontSize + 'em' }">我是字体</span>
      <app-header v-on:change-size="fatherClick"></app-header>
      </div>
    `,
           components: {
               'app-header': Header
          },
           // 组件的私有数据
           data(){
               return {
                   postFontSize: 1,
              }
          },
           methods: {
               // 自己定义的change-size事件,一直在监听,等着儿子传来的信息
               fatherClick: function(value){
                   this.postFontSize += value;
              }
          }
      };
       // 根实例
       new Vue({
           el: '#app',
           // 作为根被渲染
           template: `<App></App>`,
           components: {
               // App:App,
               App,
          }
      })
       
    </script>

    Vue组件系统之混入(mixin)

    <div id='app'>
    </dic>
    <my-header></my-header>
           <p></p>
           <my-app></my-app>
    <script>
       let Header = {
        template: `<div>
    <button @click='show('xxx')'>点击显示xxx来了</button>
    <button @click='hide('xxx')'>点击显示xxx去了</button>
      </div>`,
           methods: {
               show: function(name){
                   console.log(name+'来了');
              },
               hide: function(name){
                   console.log(name+'来了');
              },
          },
      };
       let App = {
           template: `
    <div>
      <button @mouseenter='show('000')'>点击显示000来了</button>
    <button @mouseleve='hide('000')'>点击显示000去了</button>
      </div>
    `,
           methods: {
               show: function(name){
                   console.log(name+'来了');
              },
               hide: function(name){
                   console.log(name+'来了');
              },
          }
      };
       // 根实例
       new Vue({
           el: '#app',
           components: {
               "my-header": Header,
               "my-app": App,
          }
      })
       
    </script>

    --------------------------------------------------------------------------------------------------------------------------------------------------------------------
    <div id="app">
    <my-header></my-header>
    <p></p>
    <my-app></my-app>
    </div>

    <script>

    let mixs = {
    methods: {
    show: function (name) {
    console.log(name + '来了')
    },
    hide : function (name) {
    console.log(name+ '去了')
    }
    }
    };
    let header = {
    template: `<div>
    <button @click="show('xxx')">点击显示来了</button>
    <button @click="hide('xxx')">点击显示来了</button>
    </div>`,
    mixins: [mixs],
    };
    let app = {
    template: `
    <div>
    <button @mouseenter='show("000")'>点击显示000来了</button>
    <button @mouseleve='hide("000")'>点击显示000去了</button>
    </div>
    `,
    mixins: [mixs],
    };
    new Vue({
    el: '#app',
    components: {
    "my-header": header,
    "my-app": app,
    }
    })

    </script>

     

    Vue组件系统之插槽<slot></slot>

    - 内容分发
    <style>
       .box {
            50px;
           height: 50px;
           float: left;
      }
    </style>
    <div id='app'>
    <global-component>首页</global-component>
       <global-component>免费</global-component>
       <global-component>收费</global-component>
    </div>

    <script>
       // 注册全局组件
       Vue.component(
           "global-component", {
               template: `<div class="box"><slot></slot></div>`,
          }
      );
       
       new Vue({
           el: '#app',
      })
    </script>

    Vue组件系统之具名插槽

    <style>
       .box {
            50px;
           height: 50px;
           float: left;
      }
    </style>
    <div id='app'>
    <global-component>
      <div slot='home'>首页</div>
           <div slot='free'>免费</div>
           <div slot='toll'>收费</div>
       </global-component>
    </div>

    <script>
       // 注册全局组件
       Vue.component(
           "global-component", {
               template: `<div class="box">
    <slot name="home"></slot>
    <slot name="free"></slot>
    <slot name="toll"></slot>
      </div>`,
          }
      );
       
       new Vue({
           el: '#app',
      })
    </script>

     

  • 相关阅读:
    服务控制器
    .Net Web项目安装包制作 (一)
    C#制作Windows service服务系列一:制作一个可安装、可启动、可停止、可卸载的Windows
    用Visual C#创建Windows服务程序
    插件的“动态替换”
    .Net Web项目安装包制作(三)补充说明
    .net打包/C#WinFrom程序打包
    C#制作Windows service服务系列三制作可控制界面的Windows服务(windows service)
    C#制作Windows service服务系列二演示一个定期执行的windows服务及调试
    .Net Web项目安装包制作 (二)数据库安装、其他组件的安装
  • 原文地址:https://www.cnblogs.com/xiao-xue-di/p/9930068.html
Copyright © 2020-2023  润新知