偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

一個(gè)孤獨(dú)的孩子:我該不該將控制流指令寫入通用結(jié)構(gòu)組件中?

開(kāi)發(fā) 前端
控制流指令,如v-if和v-for,如果在較大項(xiàng)目中,就很有可能會(huì)創(chuàng)建一些難以閱讀的嵌套代碼。如果在v-if內(nèi)嵌套了v-for ,剛這個(gè)特征就更明顯了。

 控制流指令,如v-if和v-for,如果在較大項(xiàng)目中,就很有可能會(huì)創(chuàng)建一些難以閱讀的嵌套代碼。如果在v-if內(nèi)嵌套了v-for ,剛這個(gè)特征就更明顯了。

[[335072]]

為了程序員的頭發(fā)著想,我希望大家不要編寫具有多級(jí)嵌套代碼。

但是,如果你偏要這么干,那么送你一個(gè)技巧,可以以輕松地將這些噩夢(mèng)轉(zhuǎn)變成童話故事。

一個(gè)孤獨(dú)的子組件

當(dāng)嵌套開(kāi)始變多時(shí),如果我還想要保持整潔,我的默認(rèn)做法是將代碼提取到一個(gè)新組件中。

使用v-for和v-if,我們把指令中的所有東西都轉(zhuǎn)換成它自己的組件。

舉個(gè)例子來(lái)看看,我們從這個(gè)有嵌套的模板開(kāi)始

  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)容提取到一個(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> 

如果我們導(dǎo)入這個(gè)新組件,我們會(huì)看到它很好地?cái)[脫了所有嵌套:

  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> 

此示例中沒(méi)有太多的嵌套,所以單獨(dú)為一小部分內(nèi)容做一個(gè)組件,有點(diǎn)繁瑣。但是,如果我們有兩個(gè),三個(gè)或更多的嵌套級(jí)別,則此技巧可以消除嵌套結(jié)構(gòu)并讓代碼更易于理解。

但這里有一個(gè)問(wèn)題:為什么我們不把v-for指令也寫入新的組件中?

我們應(yīng)該把控制流指令放入新的組件中嗎?

假設(shè),我們上面的 v-for 放到新的組件內(nèi),則我們會(huì)得到下面的結(jié)構(gòu):

這樣看上去,父組件確實(shí)清晰很多。但不幸的是,這種變向的把復(fù)雜度放到了子組件中:

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

哪種方式更好?

如果你最終的目的就是想減少嵌套數(shù)量,那么這個(gè)選擇肯定更糟糕。我們?cè)谧咏M件中添加了額外的嵌套級(jí)別,而沒(méi)有減少父組件中的嵌套級(jí)別。

通常,我會(huì)避免將諸如v-if和v-for之類的控制流指令放在這樣的組件的根部,因?yàn)樗鼤?huì)影響可重用性。

如果只需要一個(gè)簡(jiǎn)單ListItem 該怎么辦?

假設(shè)使用v-if,如果要使用不同的邏輯在組件之間進(jìn)行切換,或者要使用完全不同的組件怎么辦?

將控制流指令寫小最小通用結(jié)構(gòu)的組件中會(huì)限制我們的靈活性,而不會(huì)給我們帶來(lái)更多的便利性。因此,我傾向于將控制流指令留在這樣的小組件之外。我還嘗試避免將它們放在組件的根部。

一旦你深入了解“底層”的情況,此問(wèn)題及其解決方案就會(huì)顯得更加有優(yōu)勢(shì)。

作者:Michael Thiessen 譯者:前端小智 來(lái)源:medium 原文:https://www.digitalocean.com/community/tutorials/vuejs-component-slots

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

 

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

2016-04-01 10:57:50

敏捷開(kāi)發(fā)團(tuán)隊(duì)配合

2022-08-05 07:37:39

單體架構(gòu)遷移微服務(wù)

2023-08-14 18:03:32

2009-07-01 15:33:23

JAVA認(rèn)證

2015-10-20 09:07:44

2022-09-13 07:31:50

工具代碼Lombok

2010-10-25 14:16:59

扁平化網(wǎng)絡(luò)

2013-01-23 14:19:56

健康類App移動(dòng)應(yīng)用

2012-02-15 09:48:31

移動(dòng)娛樂(lè)廣告封殺

2013-02-18 09:40:28

2020-11-18 09:48:09

Synchronize多線程Java

2019-03-28 09:44:33

程序員加薪創(chuàng)業(yè)

2013-05-23 15:24:57

Wi-Fi無(wú)線網(wǎng)絡(luò)設(shè)置無(wú)線網(wǎng)絡(luò)展望

2016-12-22 23:55:40

架構(gòu)師代碼技術(shù)

2014-12-30 09:30:57

.net語(yǔ)言選擇

2021-05-25 10:28:47

網(wǎng)絡(luò)安全網(wǎng)絡(luò)攻擊網(wǎng)絡(luò)事件

2020-07-08 09:41:56

新基建5G互聯(lián)網(wǎng)

2018-07-30 08:37:02

數(shù)據(jù)庫(kù)Redis數(shù)據(jù)結(jié)構(gòu)

2023-11-28 12:00:22

應(yīng)用程序API

2020-03-09 09:33:31

網(wǎng)絡(luò)安全人臉識(shí)別技術(shù)
點(diǎn)贊
收藏

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