日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
很多人不知道Vue中的組件就是一個(gè)函數(shù)!

 在所有組件之下,組件只是返回一些HTML的函數(shù)。

這是一個(gè)強(qiáng)大的簡(jiǎn)化,如果你曾研究過Vue代碼庫(kù)的復(fù)雜性,那么你就會(huì)知道這實(shí)際上不是事實(shí)。但是從根本上講,這就是Vue為我們所做的事情。

看一下這個(gè)組件:

 
 
 
 
  1.  

下面是用 Javascript 實(shí)現(xiàn),它做了同樣的事情:

 
 
 
 
  1. function component(title) { 
  2.   let html = ''; 
  3.  
  4.   html += '
    '; 
  5.   html += `

    ${title}

    `; 
  6.   html += '

    Some words that describe this thing

    '; 
  7.   html += ''; 
  8.   html += '
'; 
  •  
  •   return html; 
  • 該代碼與Vue組件構(gòu)造HTML 方式基本相同。當(dāng)然,這里沒有響應(yīng)性,事件處理或其它一系列功能,但是獲取輸出的 HTML 是同一回事。

    如果你從未想過以這種方式考慮組件,那很正常,很多人也沒有。

    當(dāng)你開始學(xué)習(xí)Vue時(shí),會(huì)看到新的語(yǔ)法和所有這些神奇的東西,它們看起來與我們以前接觸過的任何東西都不太一樣。

    依靠編程基礎(chǔ)

    一旦真正意識(shí)到 Vue 組件實(shí)際上只是函數(shù),那么我們就可以發(fā)現(xiàn)一些隱藏的知識(shí)點(diǎn)。

    我們可以從學(xué)習(xí) Javascript 或任何其他編程語(yǔ)言中學(xué)到的知識(shí)應(yīng)用到 Vue 中。

    例如,假設(shè)我們想學(xué)習(xí)如何編寫優(yōu)雅和簡(jiǎn)潔的Vue組件。我們可以將所學(xué)到的編寫干凈 Javascript 的知識(shí)應(yīng)用到Vue組件中。比如保持函數(shù)簡(jiǎn)小,使用描述性名稱,等等

    即使是學(xué)習(xí)類似的框架,如React或Angular,也是非常有用的練習(xí)。

    現(xiàn)在讓我們看一個(gè)更詳細(xì)的例子。

    以新的視角進(jìn)行重構(gòu)

    假設(shè)有以下的一個(gè)組件:

     
     
     
     
    1.  

    為簡(jiǎn)化,我們將v-for內(nèi)部的內(nèi)容變成了一個(gè)新的組件,如下所示:

     
     
     
     
    1.  

    完成此操作后,我們將其替換為父組件,這使我們擺脫了多余的嵌套:

     
     
     
     
    1.  

    如果我們?cè)趯慗avascript,我們會(huì)用幾乎完全相同的方式來做這些。

    下面是一個(gè)使用循環(huán)的例子

     
     
     
     
    1. function goingLoopy() { 
    2.   const elements = document.querySelectorAll('.item'); 
    3.  
    4.   for (const el of elements) { 
    5.     const { width } = el.getBoundingClientRect(); 
    6.     if (width > 500) { 
    7.       el.classList.add('large'); 
    8.     } 
    9.   } 

    在這里,我們使用 DOM 方法獲取了類為 item 的所有元素,如果它們大于500px,則將large類添加其中。

    這已經(jīng)很好了,但是如果還要優(yōu)化代碼,應(yīng)該怎么做呢

    我的猜測(cè)是,你可能會(huì)把for..of的內(nèi)容帶入一個(gè)新函數(shù)中:

     
     
     
     
    1. function updateElement(el) { 
    2.   const { width } = el.getBoundingClientRect(); 
    3.   if (width > 500) { 
    4.     el.classList.add('large'); 
    5.   } 
    6.  
    7. function goingLoopy() { 
    8.   const elements = document.querySelectorAll('.item'); 
    9.  
    10.   for (const el of elements) { 
    11.     updateElement(el); 
    12.   } 

    如果你將組件看作是一個(gè)函數(shù),那么對(duì)于我們的優(yōu)化會(huì)有更深入的了解。

    他們一直在你腦海中,你只是沒有意識(shí)到。

    作者:Michael Thiessen 譯者:前端小智 來源:medium

    來源:https://medium.com/js-dojo/vue-js-functional-components-what-why-and-when-439cfaa08713

    本文轉(zhuǎn)載自微信公眾號(hào)「****」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系****公眾號(hào)。


    本文標(biāo)題:很多人不知道Vue中的組件就是一個(gè)函數(shù)!
    網(wǎng)站URL:http://www.dlmjj.cn/article/cdjpddj.html