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

你應該經常使用的7種Vue模式

開發 前端
說實話,閱讀文檔并不是我們大多數人喜歡的事情,但當使用像Vue這樣不斷發展的現代前端框架時,很多東西會隨著每一個新版本的發布而改變,你可能會錯過一些后來推出的新的閃亮功能。讓我們看一下那些有趣但不那么流行的功能,請記住,所有這些都是Vue文檔的一部分。

[[392203]]

原文|https://medium.com/js-dojo/7-vue-patterns-that-you-should-be-using-more-often-b13cde4d2ae6

作者|Fotis Adamakis

說實話,閱讀文檔并不是我們大多數人喜歡的事情,但當使用像Vue這樣不斷發展的現代前端框架時,很多東西會隨著每一個新版本的發布而改變,你可能會錯過一些后來推出的新的閃亮功能。讓我們看一下那些有趣但不那么流行的功能,請記住,所有這些都是Vue文檔的一部分。

1.處理加載狀態

在大型應用程序中,我們可能需要將應用程序劃分為更小的塊,只有在需要時才從服務器加載組件。為了使這一點更容易,Vue允許你將你的組件定義為一個工廠函數,它異步解析你的組件定義。Vue只有在需要渲染組件時才會觸發工廠函數,并將緩存結果,以便將來重新渲染。2.3版本的新功能是,異步組件工廠也可以返回一個如下格式的對象。

  1. const AsyncComponent = () => ({ 
  2.   // 要加載的組件(應為Promise) 
  3.   component: import('./MyComponent.vue'), 
  4.   // 異步組件正在加載時要使用的組件 
  5.   loading: LoadingComponent, 
  6.   // 加載失敗時使用的組件 
  7.   error: ErrorComponent, 
  8.   // 顯示加載組件之前的延遲。默認值:200ms。 
  9.   delay: 200, 
  10.   // 如果提供并超過了超時,則會顯示error組件。默認值:無窮。 
  11.   timeout: 3000 
  12. }) 

通過這種方法,你有額外的加載和錯誤狀態、組件獲取的延遲和超時等選項。

2.廉價的“v-once”靜態組件

在Vue中渲染純HTML元素的速度非常快,但有時你可能有一個包含大量靜態內容的組件。在這種情況下,你可以通過在根元素中添加 v-once 指令來確保它只被評估一次,然后進行緩存,就像這樣。

  1. Vue.component('terms-of-service', { 
  2.   template: ` 
  3.     <div v-once> 
  4.       <h1>Terms of Service</h1> 
  5.       ... a lot of static content ... 
  6.     </div> 
  7.   ` 
  8. }) 

3.遞歸組件

組件可以在自己的模板中遞歸調用自己,但是,它們只能通過 name 選項來調用。

如果你不小心,遞歸組件也可能導致無限循環:

  1. name'stack-overflow'
  2. template: '<div><stack-overflow></stack-overflow></div>' 

像上面這樣的組件會導致“超過最大堆棧大小”的錯誤,所以要確保遞歸調用是有條件的即(使用 v-if 最終將為 false)

4.內聯模板

當特殊屬性 inline-template 存在于一個子組件上時,該組件將使用它的內部內容作為它的模板,而不是將其視為分布式內容,這允許更靈活的模板編寫。

  1. <my-component inline-template> 
  2.   <div> 
  3.     <p>These are compiled as the component's own template.</p> 
  4.     <p>Not parent's transclusion content.</p> 
  5.   </div> 
  6. </my-component> 

5.動態指令參數

指令參數可以是動態的。例如,在 v-mydirective:[argument]=“value" 中, argument 可以根據組件實例中的數據屬性更新!這使得我們的自定義指令可以靈活地在整個應用程序中使用。

這是一條指令,其中可以根據組件實例更新動態參數:

  1. <div id="dynamicexample"
  2.   <h3>Scroll down inside this section ↓</h3> 
  3.   <p v-pin:[direction]="200">I am pinned onto the page at 200px to the left.</p> 
  4. </div> 
  5. Vue.directive('pin', { 
  6.   bind: function (el, binding, vnode) { 
  7.     el.style.position = 'fixed' 
  8.     var s = (binding.arg == 'left' ? 'left' : 'top'
  9.     el.style[s] = binding.value + 'px' 
  10.   } 
  11. }) 
  12.  
  13. new Vue({ 
  14.   el: '#dynamicexample'
  15.   data: function () { 
  16.     return { 
  17.       direction: 'left' 
  18.     } 
  19.   } 
  20. }) 

6.事件和鍵修飾符

對于 .passive、.capture 和 .once 事件修飾符,Vue提供了可與 on 一起使用的前綴:

例如:

  1. on: { 
  2.   '!click': this.doThisInCapturingMode, 
  3.   '~keyup': this.doThisOnce, 
  4.   '~!mouseover': this.doThisOnceInCapturingMode 

對于所有其他的事件和鍵修飾符,不需要專有的前綴,因為你可以在處理程序中使用事件方法。

7.依賴注入(Provide/Inject)

有幾種方法可以讓兩個組件在 Vue 中進行通信,它們各有優缺點。在2.2版本中引入的一種新方法是使用Provide/Inject的依賴注入。

這對選項一起使用,允許一個祖先組件作為其所有子孫的依賴注入器,無論組件層次結構有多深,只要它們在同一個父鏈上。如果你熟悉React,這與React的上下文功(context)能非常相似。

  1. // parent component providing 'foo' 
  2. var Provider = { 
  3.   provide: { 
  4.     foo: 'bar' 
  5.   }, 
  6.   // ... 
  7.  
  8. // child component injecting 'foo' 
  9. var Child = { 
  10.   inject: ['foo'], 
  11.   created () { 
  12.     console.log(this.foo) // => "bar" 
  13.   } 
  14.   // ... 

本文轉載自微信公眾號「前端全棧開發者」,可以通過以下二維碼關注。轉載本文請聯系前端全棧開發者公眾號。

 

責任編輯:武曉燕 來源: 前端全棧開發者
相關推薦

2020-11-08 16:04:03

開發工具技術

2020-11-18 08:15:39

TypeScript設計模式

2022-06-16 08:24:59

設計模式代碼前端

2018-04-03 15:38:07

Java單例模式模式設計

2013-05-20 10:14:42

軟件工具項目工具開發工具

2021-02-19 14:07:03

JavaScript編程開發

2020-05-26 12:32:30

Python模板語言編程語言

2021-08-12 08:15:49

Vue 技巧 開發工具

2020-05-27 09:23:29

Python模板語言

2014-12-17 09:27:41

開源PaaS

2023-11-02 08:32:11

機器學習人工智能

2020-06-04 09:50:31

智能家居智能安防人工智能

2022-05-18 09:01:31

JavaScriptEvalErrorURIError

2021-02-07 22:24:59

Redis數據存儲

2021-04-12 15:54:45

Android 開發技巧

2017-12-29 11:07:34

2023-09-06 12:35:40

2023-10-26 14:47:51

OpenAI人工智能工具

2020-03-16 08:35:11

vue開發組件

2019-12-24 16:52:22

Go語言騰訊TM函數
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久33| 精品亚洲91| 日韩av免费在线观看 | 免费av观看 | 呦呦在线视频 | 婷婷久久综合 | 午夜看片 | 一级黄色片免费 | 99热热99 | 亚洲不卡在线视频 | 干干干操操操 | 亚洲精品一区二区三区在线观看 | 男人天堂手机在线视频 | 日韩av福利在线观看 | 在线视频一区二区 | 91毛片在线观看 | 福利精品| 韩国理论电影在线 | 99re国产精品 | 国产精品夜间视频香蕉 | 久久免费精品视频 | 日韩精品极品视频在线观看免费 | 国产综合久久久 | 亚洲欧美在线观看 | 亚洲国产精品一区二区三区 | 日韩一区二区三区在线看 | www.国产一区 | 日韩精品色网 | 国产伦精品一区二区三区视频金莲 | 久久久国产一区二区三区 | 涩涩视频大全 | 国产精品美女久久久久aⅴ国产馆 | 国产日韩精品一区 | 超碰日本 | 午夜一区二区三区 | 成人精品鲁一区一区二区 | 狠狠干天天干 | 国产精品一区二区av | 国产高清久久久 | 日韩成人在线看 | 99热在线观看精品 |