假如我们写了一段html代码,如果想要在其他地方调用这这块代码块,我们只能复制多一段,这样无疑是最笨的方法,使得程序变得缓慢不说,如果我想统一修改代码块上的某个元素,就得全部修改一次,真的是蠢到家了有木有。幸好有了Vue.js,把前端程序员从愚蠢繁杂的工作中拯救了出来。
Vue.js为什么那么伟大?这篇文章将带大家去探讨一下Vue.js的强大之处。
一、什么是Vue组件?Vue.js组件是Vue.js 最强大的功能之一。Vue.js组件可以扩展HTML元素,什么意思呢?就是为html新增标签,就像html5那样加入了全新的结构型元素,例如页眉header,页脚footer,导航nav,内容article,章节section等。而Vue.js组件扩展HTML的元素是你为该项目注册的。此外Vue.js可以封装可重用的代码,在需要的之后只需要直接引入就可以。来看看注册Vue.js组件。
二、Vue.js组件中的全局组件和局部组件就像javascript定义变量,Vue.js组件注册也有区分全局和局部组件。
1、全局组件
全部组件就是可以在任意Vue.js示例下使用的,在Vue.js中调用Vue.js.component()
注册的组件是全局的。
注册一个全局组件语法格式如下:
Vue.js.component(tagName, options)
tagName 为组件名,options 为配置选项。注册后,我们可以使用以下方式来调用组件:
<
tagName>
<
/tagName>
例如:把id=template1中的模版插入到已经注册的goodnight组件中。
<
div id="app">
<
goodnight><
/goodnight>
<
goodnight><
/goodnight>
<
goodnight><
/goodnight>
<
/div><
template id="template1">
<
div>
<
h3>goodnight<
/h3>
<
button id="btn">Submit<
/button>
<
/div>
<
/template><
/body>
<
script>
// 注册
Vue.component('goodnight', {
template: '#template1'
})
// 创建根实例
new Vue({
el: '#app'
})
<
/script>
文章图片
2、局部组件
如果在实际项目中不需要全局注册,或者是想让组件使用在其它组件内,可以用选项对象的components属性实现局部注册。
例如:模版只能在goodnight里面用,在good组件是用不了的。
<
div id="app">
<
goodnight><
/goodnight>
<
goodnight><
/goodnight>
<
good><
/good>
<
/div><
template id="template1">
<
div>
<
h3>goodnight<
/h3>
<
button id="btn">Submit<
/button>
<
/div>
<
/template><
/body>
<
script>var template1 = {
template: '#template1'
}
// 注册
// 创建根实例
new Vue({
el: '#app',
components:{
'goodnight': template1,
}
})
<
/script>
文章图片
另外,Vue.extend 是构造一个组件的构造器。充分说明了Vue.js的组件使用规则和原理,设置模板,向模板填充数据并渲染。
用于Vue.js组件的局部注册。简单的理解为Vue.extend创建的组件会自动添加到自定义的元素上。
文章图片
用法:Vue.extend ( options ),options 是对象;
例如:
<
div id="extend1"><
/div>var extend1=Vue.extend({
template:'<
h1>{{myname}}<
/h1>',
data(){
return {
myname:'vue.js局部组件使用'
}
}})var extend2=new extend1();
extend2.$mount('#extend1')
三、自定义属性prop组件实例之间的作用于是独立的,相互之间不能进行数据的传递,那如果一个子组件需要应用父组件的数据,应该如何来进行数据传递呢?在Vue.js中,可以通过设置父组件的属性prop,自定义地把数据传递给子组件。
例如:
<
div id="app">
<
my-component message="hello" name="vue.js" age="18"><
/my-component>
<
/div><
/body>
<
script>Vue component('my-component', {
// 声明 props
props: ['message','name','age'],data:function(){
return {
message1:this.message,
name1:this.name,
age1:this.age
}
},
template: '<
span>大家好,我是{{ name1}},今年{{age1}}<
/span>'
})// 注册
// 创建根实例
new Vue({
el: '#app',})
<
/script>
文章图片
其实props是收取父组件的数据,并且可以通过实例创建子组件的方式传递给子组件并渲染模版。prop 是单向绑定的:当父组件的属性变化时,将传导给子组件,但是不会反过来。这是为了防止子组件无意修改了父组件的状态而发生数据错误。
四、自定义事件那在实际项目中,是需要把子组件要把数据传递回去给父组件,那怎么办?不是说props是单向绑定的吗?这时候,就不用prop 了,子组件要把数据传递给父级 依靠自定义事件。
$on(eventName)
监听事件和
$emit(eventName)
触发事件例如:<
div id="app">
<
button @click="add">{{night}}<
/button>
<
/div><
/body>
<
script>
var app=new Vue({
el:"#app",
data:{
night:"晚上好"
},
methods:{
add:function(){
this.$emit('text','我睡了');
}}
});
app.$on('text',function(value){
console.log(value);
})<
/script>
文章图片
【vue.js框架快速入门简明教程(六)(组件)】以上是Vue.js强大的组件教程,结合实例大家更加容易理解和快速上手使用,会灵活的使用组件在实际项目开发中显得尤为重要,帮前端开发者们剩下了不少功夫,高效率的工作。如果本文章中什么不懂的或者存在的问题,欢迎留言指正,大家共同进步。
推荐阅读
- 详解JavaScript基本数据类型和引用类型的区别、值传递和引用传递
- JavaScript基础快速入门教程(八)(包装数据类型、日期对象、Math对象和全局对象)
- JavaScript基础快速入门教程(七)(数组创建、遍历数组、数据结构和算法和实例)
- JavaScript基础快速入门教程(六)(对象详解和编程实例)
- vue.js框架快速入门简明教程(五)(表单)
- vue.js框架快速入门简明教程(四)(样式绑定和事件处理器)
- JavaScript基础快速入门教程(五)(函数的定义和调用、带参函数和匿名函数)
- Linux中的tty命令和示例
- Python中的多态性用法指南