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

很多人不知道 Vue 中的組件就是一個函數!

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

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

[[333552]]

這是一個強大的簡化,如果你曾研究過Vue代碼庫的復雜性,那么你就會知道這實際上不是事實。但是從根本上講,這就是Vue為我們所做的事情。

看一下這個組件:

  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 實現,它做了同樣的事情:

 

 

  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組件構造HTML 方式基本相同。當然,這里沒有響應性,事件處理或其它一系列功能,但是獲取輸出的 HTML 是同一回事。

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

當你開始學習Vue時,會看到新的語法和所有這些神奇的東西,它們看起來與我們以前接觸過的任何東西都不太一樣。

依靠編程基礎

一旦真正意識到 Vue 組件實際上只是函數,那么我們就可以發現一些隱藏的知識點。

我們可以從學習 Javascript 或任何其他編程語言中學到的知識應用到 Vue 中。

例如,假設我們想學習如何編寫優雅和簡潔的Vue組件。我們可以將所學到的編寫干凈 Javascript 的知識應用到Vue組件中。比如保持函數簡小,使用描述性名稱,等等

即使是學習類似的框架,如React或Angular,也是非常有用的練習。

現在讓我們看一個更詳細的例子。

以新的視角進行重構

假設有以下的一個組件:

  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內部的內容變成了一個新的組件,如下所示:

  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,我們會用幾乎完全相同的方式來做這些。

下面是一個使用循環的例子

  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類添加其中。

這已經很好了,但是如果還要優化代碼,應該怎么做呢

我的猜測是,你可能會把for..of的內容帶入一個新函數中:

  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.   } 

如果你將組件看作是一個函數,那么對于我們的優化會有更深入的了解。

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

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

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

本文轉載自微信公眾號「****」,可以通過以下二維碼關注。轉載本文請聯系****公眾號。

 

責任編輯:武曉燕 來源: 大遷世界
相關推薦

2021-01-15 05:39:13

HashMapHashTableTreeMap

2020-06-29 08:28:36

v-for 解構函數

2015-07-22 11:53:29

云計算AWS分析癱瘓

2020-07-07 08:35:53

VueKey組件

2021-08-24 00:13:23

Windows 10Windows微軟

2022-12-05 15:23:33

JavaScript技巧運算符

2019-01-07 09:27:39

2021-08-27 10:03:12

人工智能AI

2020-11-20 06:13:04

Like %

2020-07-01 08:36:43

CSS規范web

2018-08-10 10:36:25

SSL證書誤區

2019-12-13 19:52:29

人工智能AI

2021-05-08 23:19:25

微信存儲小程序

2020-11-16 11:24:00

Spring AOP數據庫

2023-06-05 08:07:34

聚集索引存儲數據

2021-12-14 10:55:14

Python元素數據

2021-01-07 05:27:20

包導入變量

2022-06-23 13:13:36

GitHub開發技巧

2021-01-12 12:33:20

Pandas技巧代碼

2025-01-06 09:14:54

HOCVue3render
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 天天躁日日躁狠狠躁2018小说 | 久久艹免费视频 | 青青草精品视频 | 天天澡天天狠天天天做 | 久久久91精品国产一区二区三区 | 99国产精品99久久久久久粉嫩 | 极品粉嫩国产48尤物在线播放 | 老司机精品福利视频 | 国产aa| 国产精品一区二区久久 | 99福利 | 99久久精品国产一区二区三区 | 久久精品一区二区 | 亚洲综合在线网 | 高清国产午夜精品久久久久久 | 国产精品日韩高清伦字幕搜索 | 毛片毛片毛片毛片毛片 | 欧美国产一区二区三区 | 国产精品有限公司 | 亚洲一区二区成人 | 在线日韩av电影 | 国产成人a亚洲精品 | 伦理片97 | 欧美一级在线 | 国产精品大全 | 国产成人高清视频 | 亚洲情综合五月天 | 国产日韩欧美一区二区 | 亚洲综合区 | 黄色av网站在线观看 | 欧美三级久久久 | 黑人性hd| 日韩一区二区三区av | 久久com | 亚洲精品在线免费观看视频 | 久久草视频 | 一区二区三区精品视频 | 黑人久久 | 国产成人网 | 国产精品久久久久久婷婷天堂 | 一区二区三区四区在线播放 |