这篇文章将为大家详细讲解有关如何使用vue写一个组件,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
写一个vue组件
我下面写的是以.vue结尾的单文件组件的写法,是基于webpack构建的项目。如果还不知道怎么用webpack构建一个vue的工程的,可以移步到vue-cli。
一个完整的vue组件会包括一下三个部分:
template:模板
js: 逻辑
css : 样式
每个组件都有属于自己的模板,js和样式。如果将一个页面比喻成一间房子的话,组件就是房子里的客厅、卧室、厨房、厕所。如果把厨房单独拿出来的话,组件又可以是刀、油烟机...等等。就是说页面是由组件构成的,而组件也可以是组件构成的。这样就可以非常的灵活,耦合性也非常的低。
先来看看一个组件在不是.vue文件内的写法:
Vue.component('simple-counter', {
template: '<div id="inputBox"><input type="text"></div>',
data () { // 数据
return {
counter: 0
}
},
methods: {
// 写点方法
},
created () {
// 生命钩子
},
computed: {
// 计算属性
}
})
template是用来干嘛的呢?
<template>
<div id="inputBox">
<input type="text">
</div>
</template>
<!--
template就是这个组件的html,也就是下面部分(vue-loader会将template标签下的内容解析出来):
-->
<div id="inputBox">
<input type="text">
</div>
<!--
对应原生写法的话,就是template内的dom字符串
-->
js部分
export default {
data () {
return {
counter: 0
}
},
methods: {
// 方法
},
created () {
// 生命钩子
},
computed: {
// 计算属性
}
}
// 在这里很明显js部分就是对应的原生写法内的非template部分了。
// export default这个是es6的模块写法,不懂的可以先去了解es6的模块化
css部分
<style lang="scss" scoped>
...样式
</style>
<!--这里的你可以使用scss(CSS扩展语言)只要安装"sass-loader"和"node-sass"这两个npm包就好了,vue-cli已经配好相关参数了。如果想使用less或其它css扩展语音,只要装好各自的编译包就好了。而scoped是让css的作用域只在该文件下。-->
引入
要怎么在其它组件引用该组件?
组件一(button.vue)
<template>
<div class="button">
<button @click="onClick">{{text}}</button>
</div>
</template>
<script>
export default {
props: ['text'], // 获取父组件的传值
data () {
return {
}
},
methods: {
onClick () {
console.log('点击了子组件')
}
}
}
</script>
<style lang="scss" scoped>
.button {
button {
width: 100px;
}
}
</style>
组件二(box.vue)
<template>
<div class="box">
<v-button :text="text"></v-button> <!--使用组件并传值(text)-->
</div>
</template>
<script>
import Button from './button.vue' // 引入子组件
export default {
components: {
'v-button': Button
},
data () {
return {
text: '按键的name'
}
},
methods: {
}
}
</script>
关于“如何使用vue写一个组件”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。