最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解vue組件基礎

 更新時間:2018年05月04日 08:33:47   投稿:laozhang  
本篇文章給大家總結了vue組件基礎的相關知識點以及代碼實例,有需要的朋友可以學習參考下。

什么是組件

組件(Component)是對數(shù)據(jù)和方法的簡單封裝。web中的組件其實可以看成是頁面的一個組成部分,它是一個具有獨立的邏輯和功能的界面,同時又能根據(jù)規(guī)定的接口規(guī)則進行相互融和,最終成為一個完整的應用,頁面就是由一個個類似這樣的組成部分組成的,比如導航、列表、彈窗、下拉菜單等。頁面只不過是這樣組件的容器,組件自由組合形成功能完整的界面,當不需要某個組件,或者想要替換某個組件時,可以隨時進行替換和刪除,而不影響整個應用的運行。、前端組件化的核心思想就是將一個巨大復雜的東西拆分成粒度合理的小東西。

使用提高開發(fā)效率、方便重復使用、簡化調試步驟、提升整個項目的可維護性、便于協(xié)同開發(fā)。

vue作為一個輕量級前端框架,其核心就是組件化開發(fā)。

組件可以擴展 HTML 元素,封裝可重用的代碼。在較高層面上,組件是自定義元素,Vue.js 的編譯器為它添加特殊功能。在有些情況下,組件也可以表現(xiàn)為用 is 特性進行了擴展的原生 HTML 元素。

vue中,組件是可復用的 Vue 實例。因為組件是可復用的 Vue 實例,所以它們與 new Vue 接收相同的選項,例如 data、computed、watch、methods 以及生命周期鉤子等。僅有的例外是像 el 這樣根實例特有的選項。

組件注冊

全局注冊

通過 Vue.component 來創(chuàng)建組件:

 Vue.component('my-component-name', {
 // ... 選項 ...
 })

這些組件是全局注冊的。也就是說它們在注冊之后可以用在任何新創(chuàng)建的 Vue 根實例 (new Vue) 的模板中。比如:

Vue.component('component-a', { /* ... */ })
Vue.component('component-b', { /* ... */ })
Vue.component('component-c', { /* ... */ })

new Vue({ el: '#app' })

<div id="app">
 <component-a></component-a>
 <component-b></component-b>
 <component-c></component-c>
</div>

在所有子組件中也是如此,也就是說這三個組件在各自內部也都可以相互使用。

局部注冊

全局注冊往往是不夠理想的。比如,如果你使用一個像 webpack 這樣的構建系統(tǒng),全局注冊所有的組件意味著即便你已經(jīng)不再使用一個組件了,它仍然會被包含在你最終的構建結果中。這造成了用戶下載的 JavaScript 的無謂的增加。

在這些情況下,你可以通過一個普通的 JavaScript 對象來定義組件:

var ComponentA = { /* ... */ }
var ComponentB = { /* ... */ }
var ComponentC = { /* ... */ }

然后在 components 選項中定義你想要使用的組件:

new Vue({
 el: '#app'
 components: {
 'component-a': ComponentA,
 'component-b': ComponentB
 }
})

對于 components 對象中的每個屬性來說,其屬性名就是自定義元素的名字,其屬性值就是這個組件的選項對象。
注意局部注冊的組件在其子組件中不可用。例如,如果你希望 ComponentA 在 ComponentB 中可用,則你需要這樣寫:

var ComponentA = { /* ... */ }

var ComponentB = {
 components: {
 'component-a': ComponentA
 },
 // ...
}

使用Babel和webpack中的注冊組件

import ComponentA from './ComponentA.vue'

export default {
 components: {
 ComponentA
 },
 // ...
}

注意在 ES2015+ 中,在對象中放一個類似 ComponentA 的變量名其實是 ComponentA: ComponentA 的縮寫,即這個變量名同時是:

用在模板中的自定義元素的名稱
包含了這個組件選項的變量名

基礎組件的自動化全局注冊

沒看懂。

data 必須是一個函數(shù)

data: {
 count: 0
}

這樣定義的data中的變量是全局變量,在使用組件時,在一個組件中修改變量的值,會影響到所有組件中該變量的值。為避免變量干擾,一個組件的 data 選項必須是一個函數(shù),因此每個實例可以維護一份被返回對象的獨立的拷貝:

data: function () {
 return {
 count: 0
 }
}

動態(tài)組件

在不同組件之間進行動態(tài)切換是非常有用的,比如在一個多標簽的界面里:

上述內容可以通過 Vue 的 <component> 元素加一個特殊的 is 特性來實現(xiàn):

<!-- 組件會在 `currentTabComponent` 改變時改變 -->
<component v-bind:is="currentTabComponent"></component>

你會注意到,如果你選擇了一篇文章,切換到 Archive 標簽,然后再切換回 Posts,是不會繼續(xù)展示你之前選擇的文章的。這是因為你每次切換新標簽的時候,Vue 都創(chuàng)建了一個新的 currentTabComponent 實例。

重新創(chuàng)建動態(tài)組件的行為通常是非常有用的,但是在這個案例中,我們更希望那些標簽的組件實例能夠被在它們第一次被創(chuàng)建的時候緩存下來。為了解決這個問題,我們可以用一個 <keep-alive> 元素將其動態(tài)組件包裹起來。

<!-- 失活的組件將會被緩存!-->
<keep-alive>
 <component v-bind:is="currentTabComponent"></component>
</keep-alive>

可以在這里查看動態(tài)組件例子。https://jsfiddle.net/chrisvfritz/Lp20op9o/

dom標簽內使用組件

有些 HTML 元素,諸如 <ul>、<ol>、<table> 和 <select>,對于哪些元素可以出現(xiàn)在其內部是有嚴格限制的。而有些元素,諸如 <li>、<tr> 和 <option>,只能出現(xiàn)在其它某些特定的元素內部。

這會導致我們使用這些有約束條件的元素時遇到一些問題。例如:

<table>
 <blog-post-row></blog-post-row>
</table>

這個自定義組件 <blog-post-row> 會被作為無效的內容提升到外部,并導致最終渲染結果出錯。幸好這個特殊的 is 特性給了我們一個變通的辦法:

<table>
 <tr is="blog-post-row"></tr>
</table>

相關文章

  • 徹底搞懂Transition內置組件

    徹底搞懂Transition內置組件

    這篇文章主要為大家介紹了Transition內置組件使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • VUE異步更新DOM - 用$nextTick解決DOM視圖的問題

    VUE異步更新DOM - 用$nextTick解決DOM視圖的問題

    這篇文章主要介紹了VUE異步更新DOM - 用$nextTick解決DOM視圖的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • Vue+Ant Design進行大數(shù)據(jù)量下拉框卡頓與表單提交優(yōu)化

    Vue+Ant Design進行大數(shù)據(jù)量下拉框卡頓與表單提交優(yōu)化

    在現(xiàn)代前端開發(fā)中,處理大數(shù)據(jù)量渲染和表單交互是常見的挑戰(zhàn),本文將探討如何優(yōu)化 Ant Design Vue 下拉框在大數(shù)據(jù)量情況下的性能問題,并解決表單提交后重復提示的問題,需要的可以了解下
    2025-03-03
  • vue2 中二級路由高亮問題及配置方法

    vue2 中二級路由高亮問題及配置方法

    這篇文章主要介紹了vue2 中二級路由 高亮問題,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-06-06
  • 記錄一個van-list不斷onLoad加載的坑及解決

    記錄一個van-list不斷onLoad加載的坑及解決

    這篇文章主要介紹了記錄一個van-list不斷onLoad加載的坑及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • 從源碼里了解vue中的nextTick的使用

    從源碼里了解vue中的nextTick的使用

    這篇文章主要介紹了vue的nextTick的使用,本文從源碼出發(fā)給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-11-11
  • vue設置動態(tài)請求地址的例子

    vue設置動態(tài)請求地址的例子

    今天小編就為大家分享一篇vue設置動態(tài)請求地址的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • vue實現(xiàn)選中效果

    vue實現(xiàn)選中效果

    本文給大家分享的是如何使用vue實現(xiàn)鼠標點擊選中的效果,附上了實例代碼,有需要的小伙伴可以參考下
    2020-10-10
  • vue項目中的支付功能實現(xiàn)(微信支付和支付寶支付)

    vue項目中的支付功能實現(xiàn)(微信支付和支付寶支付)

    本文主要介紹了vue項目中的支付功能實現(xiàn)(微信支付和支付寶支付),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Vue中的變量賦值問題

    Vue中的變量賦值問題

    這篇文章主要介紹了Vue中的變量賦值問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10

最新評論

扶风县| 阿荣旗| 理塘县| 博白县| 新绛县| 东丰县| 二连浩特市| 罗定市| 南靖县| 浦北县| 临江市| 神农架林区| 伊宁县| 大姚县| 连城县| 长宁县| 南汇区| 巫溪县| 梨树县| 南丰县| 渭源县| 清水河县| 阳江市| 易门县| 灯塔市| 无锡市| 左权县| 迁西县| 昆山市| 天祝| 祁连县| 德清县| 青岛市| 金平| 金塔县| 永川市| 容城县| 临泽县| 和政县| SHOW| 常州市|