首頁  >  文章  >  web前端  >  如何用vue寫一個自訂元件

如何用vue寫一個自訂元件

php中世界最好的语言
php中世界最好的语言原創
2018-05-25 14:52:161947瀏覽

這次帶給大家如何用vue寫一個自定義元件,用vue寫一個自訂元件的注意事項有哪些,下面就是實戰案例,一起來看一下。

寫一個vue元件

我下面寫的是以.vue結尾的單一檔案元件的寫法,是基於webpack建構的項目。如果還不知道怎麼用webpack建構一個vue的工程的,可以移步到vue-cli。

一個完整的vue元件會包含一下三個部分:

  1. template:範本

  2. ##js: 邏輯

  3. css : 樣式

每個元件都有屬於自己的模板,js和樣式。如果將一個頁面比喻成一間房子的話,組件就是房子裡的客廳、臥室、廚房、廁所。如果把廚房單獨拿出來的話,組件又可以是刀子、油煙機...等等。是說頁面是由元件構成的,而元件也可以是元件構成的。這樣就可以非常的靈活,耦合性也非常的低。

先來看看一個元件在不是.vue檔案內的寫法:

Vue.component('simple-counter', {
 template: '<p id="inputBox"><input type="text"></p>',
 data () {   // 数据
 return {
  counter: 0
 }
 },
 methods: {
 // 写点方法
 },
 created () {
 // 生命钩子
 },
 computed: {
 // 计算属性
 }
})
template是用來幹嘛的呢?

<template>
 <p id="inputBox">
 <input type="text">
 </p>
</template>
<!--
template就是这个组件的html,也就是下面部分(vue-loader会将template标签下的内容解析出来):
-->
<p id="inputBox">
 <input type="text">
</p>
<!--
 对应原生写法的话,就是template内的dom字符串
-->
js部分

export default {
 data () {
 return {
  counter: 0
 }
 },
 methods: {
 // 方法
 },
 created () {
 // 生命钩子
 },
 computed: {
 // 计算属性
 }
}
// 在这里很明显js部分就是对应的原生写法内的非template部分了。
// export default这个是es6的模块写法,不懂的可以先去了解es6的模块化
css部分

<style lang="scss" scoped>
...样式
</style>

引入

要怎麼在其它元件引用該元件?

元件一(button.vue)

<template>
 <p class="button">
 <button @click="onClick">{{text}}</button>
 </p>
</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>
 <p class="box">
 <v-button :text="text"></v-button>    <!--使用组件并传值(text)-->
 </p>
</template>
<script>
import Button from './button.vue'  // 引入子组件
export default {
 components: {
 'v-button': Button
 },
 data () {
 return {
  text: '按键的name'
 }
 },
 methods: {
 }
}
</script>
相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

推薦閱讀:

Angular專案中使用scss步驟詳解

怎麼使用vue2.0 koa2 mongodb實作註冊登陸
#

以上是如何用vue寫一個自訂元件的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn