91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

關于vue 組件的介紹

發布時間:2020-06-23 17:44:47 來源:億速云 閱讀:157 作者:清晨 欄目:web開發

這篇文章將為大家詳細講解關于vue 組件的介紹,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

Vue的兩大核心

1. 數據驅動 - 數據驅動界面顯示

2. 模塊化 - 復用公共模塊,組件實現模塊化提供基礎

組件基礎

組件渲染過程

template ---> ast(抽象語法樹) ---> render ---> VDom(虛擬DOM) ---> 真實的Dom ---> 頁面

Vue組件需要編譯,編譯過程可能發生在

  • 打包過程 (使用vue文件編寫)
  • 運行時(將字符串賦值template字段,掛載到一個元素上并以其 DOM 內部的 HTML 作為模板)

對應的兩種方式 runtime-only vs runtime-compiler

runtime-only(默認)

  • 打包時只包含運行時,因此體積更少
  • 將template在打包的時候,就已經編譯為render函數,因此性能更好

runtime-compiler

  • 打包時需要包含(運行時 + 編譯器),因此體積更大,大概多10Kb
  • 在運行的時候才把template編譯為render函數,因此性能更差

啟用runtime-compiler

vue.config.js(若沒有手動創建一個)

module.exports = {
 runtimeCompiler: true //默認false
}

組件定義

1. 字符串形式定義(不推薦)

例子

const CustomButton = {
 template: "<button>自定義按鈕</button>"
};

這種形式在運行時才把template編譯成render函數,因此需要啟用運行時編譯(runtime-compiler)

2. 單文件組件(推薦)

創建.vue后綴的文件,定義如下

<template>
 <div>
 <button>自定義按鈕</button>
 </div>
</template>

<template> 里只能有一個根節點,即第一層只能有一個節點,不能多個節點平級

這種形式在打包的時就編譯成render函數,因此跟推薦這種方式定義組件

組件注冊

1. 全局注冊

全局注冊是通過Vue.component()注冊

import CustomButton from './components/ComponentDemo.vue'
Vue.component('CustomButton', CustomButton)

優點

  • 其他地方可以直接使用
  • 不再需要components指定組件

缺點

  • 全局注冊的組件會全部一起打包,增加app.js體積

適合

  • 基礎組件全局注冊

2. 局部注冊

在需要的地方導入

<template>
 <div id="app">
 <customButton></customButton>
 </div>
</template>
<script>
import CustomButton from "./components/ComponentDemo.vue";

export default {
 name: "App",
 components: { CustomButton }
};
</script>

優點

  • 按需加載

缺點

  • 每次使用必須導入,然后components指定

適合

  • 非基礎組件

組件使用

組件復用

<template>
 <div id="app">
 <img alt="Vue logo" src="./assets/logo.png" />
 <customButton></customButton>
 <customButton></customButton>
 <customButton></customButton>
 </div>
</template>

customButton 組件

<template>
 <div id="app">
 <button @click="increment">click me {{times}} times</button>
 </div>
</template>
<script>
export default {
 data() {
 return { times: 0 };
 },
 methods: {
 increment() {
 return this.times++;
 }
 }
};
</script>

每個組件都會創建一個新實例,組件的data必須是function,因為每個實例維護自己的data數據

組件傳參

1. 通過props屬性

定義一個button,按鈕文本通過props傳入

<template>
 <button> {{buttonText}} </button>
</template>
<script>
export default {
 props: {
 buttonText: String
 }
};
</script>

調用者通過attribute傳入

<customButton buttonText="Button 1"></customButton>
<customButton buttonText="Button 2"></customButton>
<customButton buttonText="Button 3"></customButton>

運行效果

關于vue 組件的介紹

2. 通過插槽<slot></slot>

組件在需要替換的地方放入插槽<slot></slot>

<template>
 <button ><slot>Defalt Button</slot></button>
</template>
<script>
export default {
 props: {
 buttonText: String
 }
};
</script>

調用者的innerHtml會替換插槽的值,若為空,使用默認的

運行效果

關于vue 組件的介紹

注意:看到是用自定義組件的innerHtml替換插槽,若插槽只有一個,可以不寫name attribute,若多個插槽需指定插槽name attribute

自定義事件

1. 在組件內部調用this.$emit觸發自定義事件

<template>
 <div >
 <button @click="increment">
 <slot>Defalt Button</slot>
 </button>
 <span>Click me {{times}} times</span>
 </div>
</template>
<script>
export default {
 props: {
 buttonText: String
 },
 data() {
 return { times: 0 };
 },
 methods: {
 increment() {
 this.times++;
 ("increment");
 }
 }
};
</script>

2. 調用者監聽自定義事件

<template>
 <div id="app">
 <customButton @increment="handleIncrement"></customButton>
 <customButton @increment="handleIncrement">
 <span >Button 2</span>
 </customButton>
 <customButton @increment="handleIncrement">Button 3</customButton>
 <p>Total click {{totalClicks}} times</p>
 </div>
</template>
<script>
import CustomButton from "./components/ComponentDemo.vue";

export default {
 name: "App",
 components: { CustomButton },
 data() {
 return { totalClicks: 0 };
 },
 methods: {
 handleIncrement() {
 this.totalClicks++;
 }
 }
};
</script>

3. 運行效果

關于vue 組件的介紹

關于vue 組件的介紹就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

奎屯市| 霍山县| 宜城市| 凌源市| 淳安县| 邓州市| 衡山县| 丽水市| 旬阳县| 珠海市| 宁波市| 延川县| 应城市| 敦煌市| 鄄城县| 内丘县| 清丰县| 通道| 景德镇市| 昔阳县| 东辽县| 平度市| 湘乡市| 蒙山县| 丹凤县| 咸阳市| 广河县| 彭阳县| 博野县| 云林县| 甘肃省| 历史| 师宗县| 涿州市| 庄浪县| 清新县| 雷州市| 朝阳市| 崇礼县| 灌阳县| 鸡泽县|