日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

詳解vue 組件

瀏覽:198日期:2023-01-14 09:32:42

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='http://m.b3g6.com/bcjs/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 style='margin:10px'><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 style='margin:10px'> <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 style='color:blue'>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 組件的詳細內容,更多關于vue組件的資料請關注好吧啦網其它相關文章!

標簽: Vue
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩影院二区| 欧美男人天堂| 亚洲综合二区| 亚洲精品黄色| 日韩av影院| 国产精品白浆| 欧美成人一二区| 国产精品不卡| 精品一区亚洲| 亚洲精品乱码日韩| 国产日产一区| 蜜桃av在线播放| 女主播福利一区| 欧美不卡视频| 视频一区二区三区中文字幕| 亚洲三级视频| 老司机免费视频一区二区| 色综合五月天| 野花国产精品入口| 国产精一区二区| 日韩中文影院| 日韩中文字幕1| 麻豆成人综合网| 国产韩日影视精品| 日韩高清在线不卡| 91亚洲国产成人久久精品| 成人av动漫在线观看| 欧美一区91| 精品国产精品国产偷麻豆| 亚洲一级高清| 日本久久一区| 色爱综合av| 国产亚洲欧美日韩精品一区二区三区| 成人三级高清视频在线看| 蜜臀va亚洲va欧美va天堂 | 久久中文视频| 亚洲综合五月| 国产精品久久久亚洲一区| 久久中文欧美| 成人免费网站www网站高清| 免费看精品久久片| 久久麻豆视频| 激情久久中文字幕| 国产精品久久| 伊人精品视频| 黄色网一区二区| 午夜久久av| 日韩中文首页| 国产极品一区| 一区二区三区网站| 久久视频一区| 久久精品国产精品亚洲毛片| 老鸭窝毛片一区二区三区| 免费日韩一区二区三区| 亚洲精品电影| 日本欧美国产| 国产毛片精品久久| 免费看日韩精品| 欧美13videosex性极品| 7777精品| 亚洲一二三区视频| 一区二区视频欧美| 天堂中文在线播放| 欧美日韩一区自拍| 老牛影视一区二区三区| 日韩在线综合| 国产成人免费| 国产乱码精品一区二区亚洲| 国产精品日韩| 欧美精品一区二区三区精品| 国产日韩在线观看视频| 久久国产精品亚洲77777| 婷婷成人在线| 五月激情久久| 97精品视频在线看| 麻豆一区二区三区| 国产免费av一区二区三区| 亚洲精选av| 美女91精品| 91高清一区| 精品日韩毛片| 红桃视频国产精品| 偷拍欧美精品| 在线精品小视频| 久久激情网站| 日韩欧美一区二区三区在线视频| 久久久久久久久成人| 国产精品久久| 国产精品色在线网站| 国产精品国产三级在线观看| 欧美亚洲tv| 国产欧美日韩精品高清二区综合区 | 亚州av一区| 蜜桃视频第一区免费观看| 毛片在线网站| 日本蜜桃在线观看视频| 亚洲欧洲高清| 一区二区三区四区在线看| 激情综合网址| 日韩视频一区| 亚洲精品少妇| 国产欧美日韩一区二区三区四区| 国产精品亚洲综合在线观看| 美女精品视频在线| 激情综合婷婷| 亚洲精品在线影院| 欧美性感美女一区二区| 日韩av二区| 日韩一区亚洲二区| 国产精品av一区二区| 亚洲黄页一区| 亚洲三级网址| 牛牛精品成人免费视频| 久久精品理论片| 日韩黄色大片网站| 91精品韩国| 国产一区成人| 国产免费av国片精品草莓男男| 荡女精品导航| 欧美一级精品| 中文字幕亚洲在线观看| 久久成人亚洲| 红桃视频国产一区| 日韩综合一区二区三区| 中文字幕av一区二区三区四区| 日韩美女精品| 国产精品极品国产中出| 久久精品91| 亚洲精品无播放器在线播放| 国产精品mm| 欧美日韩一二三四| 日韩精品一区二区三区中文在线| 国产精品久久久久9999高清| 亚洲天堂免费电影| 午夜电影一区| 日韩大片在线播放| 中文字幕一区二区三区日韩精品| 日韩国产欧美一区二区三区| 老司机精品视频网| 亚洲一区二区动漫| 美日韩一区二区三区| 亚洲欧美日韩高清在线| 国产精品成人一区二区网站软件| 欧美三区四区| 欧美日韩一区自拍| 91精品久久久久久久久久不卡| 亚洲狼人精品一区二区三区| 国产精品国产一区| 蜜桃视频在线观看一区二区| 精品九九在线| 日本不卡视频在线观看| 成人欧美一区二区三区的电影| 女主播福利一区| 国产午夜久久av| 日韩不卡在线| 国产精品亚洲一区二区在线观看| 免费不卡中文字幕在线| 久久av综合| 亚洲精品黄色| 欧美日韩精品免费观看视频完整| 国产精品亚洲一区二区在线观看| 亚洲成人三区| 欧美好骚综合网| 国产麻豆一区二区三区| 鲁大师影院一区二区三区| 国产精品伦理久久久久久| 日本一区二区三区中文字幕| 天堂精品久久久久| 在线成人动漫av| 大香伊人久久精品一区二区| 免费人成网站在线观看欧美高清| 一本大道色婷婷在线| 国产精品日本一区二区不卡视频 | 亚欧洲精品视频在线观看| 久久精品国产68国产精品亚洲| 国产精品永久| 亚洲一区二区三区免费在线观看| 日韩在线短视频| 国产精品网在线观看| 日韩精品一区第一页| 欧美高清不卡| 亚洲www啪成人一区二区| 大香伊人久久精品一区二区| 国产福利一区二区精品秒拍| 亚洲精品影视| 亚洲一区久久| 最新亚洲一区| 欧美在线亚洲| 午夜日韩av| 成人av动漫在线观看| 欧美少妇精品| 久久久久久色 | 亚洲高清久久| 精品国产成人| 精品黄色一级片| 国产精品jk白丝蜜臀av小说| 日韩福利视频网| 日本不卡一二三区黄网| 亚洲精品乱码久久久久久蜜桃麻豆 | 丝瓜av网站精品一区二区|