成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

很多人不知道 Vue 中的組件就是一個(gè)函數(shù)!

開發(fā) 架構(gòu)
在所有組件之下,組件只是返回一些HTML的函數(shù)。這是一個(gè)強(qiáng)大的簡化,如果你曾研究過Vue代碼庫的復(fù)雜性,那么你就會(huì)知道這實(shí)際上不是事實(shí)。但是從根本上講,這就是Vue為我們所做的事情。

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

[[333552]]

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

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

  1. <template> 
  2.   <div> 
  3.     <h1>{{ title }}</h1> 
  4.     <p>Some words that describe this thing</p> 
  5.     <button>Clickity click!</button> 
  6.   </div> 
  7. </template> 

 

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

 

 

  1. function component(title) { 
  2.   let html = ''
  3.  
  4.   html += '<div>'
  5.   html += `<h1>${title}</h1>`; 
  6.   html += '<p>Some words that describe this thing</p>'
  7.   html += '<button>Clickity click!</button>'
  8.   html += '</div>'
  9.  
  10.   return html; 

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

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

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

依靠編程基礎(chǔ)

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

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

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

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

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

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

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

  1. <template> 
  2.   <div> 
  3.     <h1>{{ title }}</h2> 
  4.     <div class="navigation"
  5.       <!-- ... --> 
  6.     </div> 
  7.  
  8.     <div v-for="item in list"
  9.       <h2 class="item-title"
  10.         {{ item.title }} 
  11.       </h2> 
  12.       <p class="item-description"
  13.         {{ item.description }} 
  14.       </p> 
  15.     </div> 
  16.  
  17.     <footer> 
  18.       <!-- ... --> 
  19.     </footer> 
  20.   </div> 
  21. </template> 

 

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

  1. <template> 
  2.   <div> 
  3.     <h2 class="item-title"
  4.       {{ item.title }} 
  5.     </h2> 
  6.     <p class="item-description"
  7.       {{ item.description }} 
  8.     </p> 
  9.   </div> 
  10. </template> 

 

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

  1. <template> 
  2.   <div> 
  3.     <h1>{{ title }}</h2> 
  4.     <div class="navigation"
  5.       <!-- ... --> 
  6.     </div> 
  7.  
  8.     <ListItem 
  9.       v-for="item in list" 
  10.       :item="item" 
  11.     /> 
  12.  
  13.     <footer> 
  14.       <!-- ... --> 
  15.     </footer> 
  16.   </div> 
  17. </template> 

 

如果我們在寫Javascript,我們會(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)該怎么做呢

我的猜測是,你可能會(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ù),那么對于我們的優(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)載本文請聯(lián)系****公眾號(hào)。

 

責(zé)任編輯:武曉燕 來源: 大遷世界
相關(guān)推薦

2021-01-15 05:39:13

HashMapHashTableTreeMap

2020-06-29 08:28:36

v-for 解構(gòu)函數(shù)

2015-07-22 11:53:29

云計(jì)算AWS分析癱瘓

2020-07-07 08:35:53

VueKey組件

2021-08-24 00:13:23

Windows 10Windows微軟

2022-12-05 15:23:33

JavaScript技巧運(yùn)算符

2019-01-07 09:27:39

2020-11-20 06:13:04

Like %

2021-08-27 10:03:12

人工智能AI

2020-07-01 08:36:43

CSS規(guī)范web

2018-08-10 10:36:25

SSL證書誤區(qū)

2019-12-13 19:52:29

人工智能AI

2021-05-08 23:19:25

微信存儲(chǔ)小程序

2020-11-16 11:24:00

Spring AOP數(shù)據(jù)庫

2023-06-05 08:07:34

聚集索引存儲(chǔ)數(shù)據(jù)

2021-12-14 10:55:14

Python元素數(shù)據(jù)

2021-01-07 05:27:20

包導(dǎo)入變量

2022-06-23 13:13:36

GitHub開發(fā)技巧

2021-02-22 13:14:00

計(jì)算機(jī)編程技術(shù)

2021-01-12 12:33:20

Pandas技巧代碼
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 色永久| 人人人艹| 国产91丝袜在线18 | 国产精品1区2区3区 一区中文字幕 | 中文精品视频 | 国产精品一二三区 | 91精品国产91久久久久久三级 | 一区二区三区高清在线观看 | 黄色片在线免费看 | 伊人天堂网 | 成人精品视频在线 | 欧美成人一区二区 | 日韩av一区二区在线观看 | 成人夜晚看av | 日韩高清电影 | 国产精品久久亚洲 | 国产精品欧美精品日韩精品 | 国户精品久久久久久久久久久不卡 | 成人免费福利视频 | 国产情侣一区 | 精品视频一区二区 | 99reav| 亚洲成人在线免费 | 日韩欧美专区 | 欧美九九| 日韩欧美电影在线 | 欧美日韩不卡合集视频 | 免费成人高清在线视频 | 成人久久久 | 毛片视频网址 | 亚洲免费在线观看视频 | 中文字幕日韩在线观看 | 欧美久久一区二区 | 久久天天综合 | 99久久婷婷国产综合精品电影 | 在线观看av网站永久 | 欧美黄视频 | 色天天综合 | 超碰在线人| 欧美日韩一卡 | 欧美国产日韩在线 |