前端框架vue.js系列(6):组件概念、动态组件
2017-09-28 17:00
906 查看
组件的概念
组件系统是 Vue 的一个重要概念,因为它是一种抽象,允许我们使用小型、独立和通常可复用的组件构建大型应用。仔细想想,几乎任意类型的应用界面都可以抽象为一个组件树。换种说法,组件就是一个个小的可复用零件,通过这些复用零件的组合使用可以搭建起一个大型机械。
我们先来看一个组件的Demo:
动态组件
动态组件是指通过使用保留的 <component> 元素,动态地绑定到它的 is 特性,我们让多个组件可以使用同一个挂载点,并动态切换。
下面是一个动态组件的Demo:
在实际开发中,我们更常用到的是组合组件,下一篇将介绍组合组件的各属性用法及参数传输的原理。
组件系统是 Vue 的一个重要概念,因为它是一种抽象,允许我们使用小型、独立和通常可复用的组件构建大型应用。仔细想想,几乎任意类型的应用界面都可以抽象为一个组件树。换种说法,组件就是一个个小的可复用零件,通过这些复用零件的组合使用可以搭建起一个大型机械。
我们先来看一个组件的Demo:
<div id="app-7"> <ol> <todo-item v-for="item in groceryList" v-bind:todo="item" v-bind:key="item.id"> </todo-item> </ol> </div> Vue.component('todo-item', { props: ['todo'], template: '<li>{{ todo.text }}</li>' }) var app7 = new Vue({ el: '#app-7', data: { groceryList: [ { id: 0, text: '蔬菜' }, { id: 1, text: '奶酪' }, { id: 2, text: '随便其他什么人吃的东西' } ] } })通过上面可知创建组件语句是Vue.component,其中props为接收父结构的入参,template为组件模板。这里要注意template模板既可以直接写文本,也可以通过引用外部模板ID代入。如上例中的语句写法可以换成:
<script type="text/x-template" id="pid"> <div> <li>{{ todo.text }}</li> </div> </script> <script> Vue.component('todo-item', { props: ['todo'], template: "#pid" }); </script>上例中我们创建了组件元素<todo-item></todo-item>,只要在<body>模块范围内加入,即可渲染出来,这类组件我们统称为组合组件。与组合组件不同的另一类组件,就是动态组件。
动态组件
动态组件是指通过使用保留的 <component> 元素,动态地绑定到它的 is 特性,我们让多个组件可以使用同一个挂载点,并动态切换。
下面是一个动态组件的Demo:
<body> <div id="app"> <component v-bind:is="currentView"></component> <button @click="changeComponent">切换动态组件</button> </div> </body> <!-- 动态组件模板1 --> <script type="text/x-template" id="dt1"> <div>这里是动态子组件1</div> </script> <!-- 动态组件模板2 --> <script type="text/x-template" id="dt2"> <div>这里是动态子组件2</div> </script> <script> var vue = new Vue({ el: "#app", data: { currentView: 'dt1' }, methods: { changeComponent: function() { if(this.currentView == "dt2") { this.currentView = "dt1"; } else { this.currentView = "dt2"; } } }, filters: {}, computed: {}, components: { dt1: { template: "#dt1" }, dt2: { template: "#dt2" } }, watch: {} }); </script>通过上面例子可以看出,动态组件没有用户自定义的元素,它渲染使用的是系统提供的<component>元素。它使用v-bind:is=(vue实例中components下的组件,如本例中的dt1和dt2)绑定组件。动态组件可以实现自由在界面中切换组件的效果。
在实际开发中,我们更常用到的是组合组件,下一篇将介绍组合组件的各属性用法及参数传输的原理。
相关文章推荐
- 前端框架vue.js系列(9):vue构造、vue组件与vue实例的关系
- 前端框架vue.js系列(7):父子组件参数变化传递规范
- 前端框架vue.js系列(10):生命周期钩子函数
- 前端框架vue.js系列(11):元素动画过渡效果
- 前端框架vue.js系列(12):混合、自定义指令
- 前端框架vue.js系列(5):表单
- 前端框架vue.js系列(8):嵌套元素、导入外部文件作为模板
- 前端框架vue.js系列(1):基础及语法
- 前端框架vue.js系列(13):路由
- 常用js框架之vue.js(深入四:组件2,slot内容分发,编译作用域,动态切换组件)
- Vue.js-----轻量高效的MVVM框架(十二、组件动态切换)
- JS组件系列——又一款MVVM组件:Vue(一:30分钟搞定前端增删改查)
- 前端框架vue.js系列(2):条件与循环
- 七周七种前端框架四:Vue.js 组件和组件通信
- 前端框架vue.js系列(4):事件修饰符与按键修饰符
- JS组件系列之MVVM组件 vue 30分钟搞定前端增删改查
- Vuejs——(12)组件——动态组件
- 合格前端系列第二弹-Vue组件开发续篇
- 【前端】vue.js实现按钮的动态绑定
- 七周七种前端框架四:Vue.js 概览