热门关键字:
jquery > jquery教程 > html5 > Vue学习之全局和私有组件小结(七)

Vue学习之全局和私有组件小结(七)

645
作者:管理员
发布时间:2020/3/11 15:28:28
评论数:0
转载请自觉注明原文:http://www.jq-school.com/Show.aspx?id=1018

  一、组件:

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

  二、组件和模块:

  1、模块化:是从代码逻辑的角度进行划分的;方便代码分层开发,保证每个功能模块的职能单一;

  2、组块化:是从UI界面的角度进行划分的;前端的组块化,方便UI组件的重用。

  三、定义全局组件的方式:

  三种方式:

  <!DOCTYPEhtml>

  <htmllang="en">

  <head>

  <metacharset="UTF-8"/>

  <metaname="viewport"content="width=device-width,initial-scale=1.0"/>

  <metahttp-equiv="X-UA-Compatible"content="ie=edge"/>

  <title>组件</title>

  <scriptsrc="./lib/vue.js"></script>

  </head>

  <body>

  <divid="app">

  <!--如果要使用组件,直接把组件的名称,以HTML标签的形式,引入到页面中即可-->

  <mycom1></mycom1>

  </div>

  <!--3.在被控制的#app外面,使用template元素,定义组件的HTML模板结构-->

  <templateid="tmp1">

  <div>

  <h1>

  这是通过

  template元素,在外部定义的组件结构,这个方式,有代码的智能提示和高亮

  </h1>

  <h4>好用,不错</h4>

  </div>

  </templateid="tmp2">

  <h2>

  这是私有的login组件

  </h2>

  <template>

  </template>

  <script>

  Vue.component("mycom1",{

  template:"#tmp1"

  });

  //1.1使用Vue.extend来创建全局的Vue组件

  //varcom1=Vue.extend({

  //通过template属性,指定了组件要展示的HTML结构

  //template:"<h3>这是使用Vue.extend创建的组件<h3>"

  //});

  //1.2使用Vue.component('组件的名称',创建出来的组件模板对象)

  //如果使用Vue.component定义全局组件的时候,组件的名称使用了驼峰命名,则在引用组件的时候,

  //需要把大写的驼峰改成小写的字母,同时,两个单词之前,使用-连接;

  //如果不使用驼峰,则直接拿名称来使用即可;

  //Vue.component("mycom1",com1);

  //2.Vue.component第一个参数:组件的名称,将来在引用组件的时候,就是一个标签的形式来引入它的

  //第二个参数:Vue.extend创建的组件,其中template就是组件将来要展示的HTML内容。

  //相当于第一种方式的简写

  //Vue.component(

  //"mycom1",

  //Vue.extend({

  ////注意:不论是哪种方式创建出来的组件,组件的template属性指向的模板内容,必须有且只能有唯一的一个元素

  //template:

  //"<div><h3>这是使用Vue.extend创建的组件<h3><span>123</span></div>"

  //})

  //);

  varvm=newVue({

  el:"#app",

  data:{},

  methods:{},

  filters:{},

  directives:{},

  components:{//定义实例的内部私有组件的

  login:{

  template:"#tmp2"

  }

  }

  });

  </script>

  </body>

  </html>

  四、定义私有的组件:如上图代码中的tmp2;

  五、组件内可以有data数据,但其是一个有return的function方法。

  <!DOCTYPEhtml>

  <htmllang="en">

  <head>

  <metacharset="UTF-8"/>

  <metaname="viewport"content="width=device-width,initial-scale=1.0"/>

  <metahttp-equiv="X-UA-Compatible"content="ie=edge"/>

  <title>组件</title>

  <scriptsrc="./lib/vue.js"></script>

  </head>

  <body>

  <divid="app">

  <!--如果要使用组件,直接把组件的名称,以HTML标签的形式,引入到页面中即可-->

  <mycom1></mycom1>

  </div>

  <script>

  Vue.component("mycom1",{

  template:"<h1>这是全局组件-----{{msg}}</h1>",

  data:function(){

  return{

  msg:"这是组件的中data定义的数据"

  };

  }

  });

  varvm=newVue({

  el:"#app",

  data:{},

  methods:{},

  filters:{},

  directives:{}

  });

  </script>

  </body>

  </html>

  六、多个组件:

  <!DOCTYPEhtml>

  <htmllang="en">

  <head>

  <metacharset="UTF-8"/>

  <metaname="viewport"content="width=device-width,initial-scale=1.0"/>

  <metahttp-equiv="X-UA-Compatible"content="ie=edge"/>

  <title>组件</title>

  <scriptsrc="./lib/vue.js"></script>

  </head>

  <body>

  <divid="app">

  <counter></counter>

  <hr/>

  <counter></counter>

  <hr/>

  <counter></counter>

  <!--如果要使用组件,直接把组件的名称,以HTML标签的形式,引入到页面中即可-->

  </div>

  <templateid="tmp1">

  <div>

  <inputtype="button"value="+1"@click="increment"/>

  <h3>{{count}}</h3>

  </div>

  </template>

  <script>

  vardataObj={count:0};

  //这是一个计数器的组件,身上有个按钮,每当点击按钮,让data中的count值+1

  Vue.component("counter",{

  template:"#tmp1",

  data:function(){

  return{

  count:0

  };

  },

  methods:{

  increment(){

  this.count++;

  }

  }

  });

  varvm=newVue({

  el:"#app",

  data:{},

  methods:{},

  filters:{},

  directives:{}

  });

  </script>

  </body>

  </html>






如果您觉得本文的内容对您的学习有所帮助:支付鼓励



关键字:html
友荐云推荐