92国产精品视频_亚洲a级在线观看_国产精品电影观看_国产精品免费观看在线_精品伊人久久97_亚洲人成在线观_尤物九九久久国产精品的特点_成人激情在线播放_成人黄色大片在线免费观看_亚洲成人精品久久久_久久免费视频在线观看_久久精品国产一区_国产一区二区三区18_亚洲欧美中文字幕在线一区_日韩美女中文字幕_日韩视频免费在线

7種經常使用的Vue.js模式和36個實用Vue開發技巧,你知道多少?

2021-4-22    前端達人

7種Vue.js模式

1.處理加載狀態

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

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

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

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

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

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

3.遞歸組件

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

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

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

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

4.內聯模板

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

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

5.動態指令參數

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

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

<div id="dynamicexample">
  <h3>Scroll down inside this section ↓</h3>
  <p v-pin:[direction]="200">I am pinned onto the page at 200px to the left.</p>
</div>
Vue.directive('pin', {
  bind: function (el, binding, vnode) {
    el.style.position = 'fixed'
    var s = (binding.arg == 'left' ? 'left' : 'top')
    el.style[s] = binding.value + 'px'
  }
})

new Vue({
  el: '#dynamicexample',
  data: function () {
    return {
      direction: 'left'
    }
  }
}) 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

6.事件和鍵修飾符

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

例如:

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

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

7.依賴注入(Provide/Inject)

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

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

// parent component providing 'foo'
var Provider = {
  provide: {
    foo: 'bar'
  },
  // ...
}

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

36個Vue開發技巧

1.require.context()

1.場景:如頁面需要導入多個組件,原始寫法:

importtitleComfrom'@/components/home/titleCom'
importbannerComfrom'@/components/home/bannerCom'
importcellComfrom'@/components/home/cellCom'
components:{titleCom,bannerCom,cellCom} 
  • 1
  • 2
  • 3
  • 4

2.這樣就寫了大量重復的代碼,利用require.context可以寫成

constpath=require('path')
constfiles=require.context('@/components/home',false,/\.vue$/)
constmodules={}
files.keys().forEach(key=>{
constname=path.basename(key,'.vue')
modules[name]=files(key).default||files(key)
})
components:modules 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

這樣不管頁面引入多少組件,都可以使用這個方法

3.API方法

實際上是webpack的方法,vue工程一般基于webpack,所以可以使用require.context(directory,useSubdirectories,regExp)
接收三個參數:directory:說明需要檢索的目錄useSubdirectories:是否檢索子目錄regExp:匹配文件的正則表達式,一般是文件名

2.watch

2.1常用用法

1.場景:表格初始進來需要調查詢接口getList(),然后input改變會重新查詢

created(){
    this.getList()
},
watch:{
     inpVal(){
        this.getList()
      }
} 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

2.2立即執行

2.可以直接利用watch的immediate和handler屬性簡寫

watch:{
     inpVal:{
        handler:'getList',
             immediate:true
        }
} 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

2.3深度監聽

3.watch的deep屬性,深度監聽,也就是監聽復雜數據類型

watch:{
     inpValObj:{
        handler(newVal,oldVal{
            console.log(newVal)
            console.log(oldVal)
     },
     deep:true
   }
} 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

此時發現oldVal和newVal值一樣;因為它們索引同一個對象/數組,Vue不會保留修改之前值的副本;所以深度監聽雖然可以監聽到對象的變化,但是無法監聽到具體對象里面那個屬性的變化

7種vue模式還能和大家說完,但36個vue開發技巧太多啦,文章篇幅也不夠,小編寫了兩個例子,沒寫出來的開發技巧小伙伴們請點擊這里領取Vue開發必須知道的36個技巧PDF文檔。

轉自:csdn 論壇 作者:李不要熬夜

藍藍設計www.skdbbs.com )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 、平面設計服


日歷

鏈接

個人資料

藍藍設計的小編 http://www.skdbbs.com

存檔

92国产精品视频_亚洲a级在线观看_国产精品电影观看_国产精品免费观看在线_精品伊人久久97_亚洲人成在线观_尤物九九久久国产精品的特点_成人激情在线播放_成人黄色大片在线免费观看_亚洲成人精品久久久_久久免费视频在线观看_久久精品国产一区_国产一区二区三区18_亚洲欧美中文字幕在线一区_日韩美女中文字幕_日韩视频免费在线
亚洲精品福利视频| 国内精品久久影院| 久久久女人电视剧免费播放下载| 日韩在线一区二区三区免费视频| 国产精彩精品视频| 欧美精品videossex性护士| 欧美色图在线视频| 欧美最猛黑人xxxx黑人猛叫黄| 国产男女猛烈无遮挡91| 亚洲精品中文字幕女同| 国产精品免费久久久| 中文字幕欧美日韩va免费视频| 久久精品视频99| 91chinesevideo永久地址| 日韩精品久久久久久久玫瑰园| 亚洲白拍色综合图区| 亚洲国产精品成人一区二区| 色先锋久久影院av| 国产mv免费观看入口亚洲| 欧美午夜女人视频在线| 456亚洲影院| 国产精品久久久久久久久免费| 这里只有精品在线播放| 久久99精品视频一区97| 国产精品男人爽免费视频1| 亚洲成人激情在线观看| 精品福利视频导航| 国产成人黄色av| 亚洲福利视频网站| 国产欧美欧洲在线观看| 欧美一性一乱一交一视频| 青青草原成人在线视频| 欧美国产亚洲视频| 91久久在线视频| zzijzzij亚洲日本成熟少妇| 欧美亚洲国产视频小说| 欧美日韩国产第一页| 久久精品这里热有精品| 国内外成人免费激情在线视频| 91情侣偷在线精品国产| 亚洲成年网站在线观看| 日韩av色在线| 欧美性猛交视频| 国产婷婷97碰碰久久人人蜜臀| 亚洲女人初尝黑人巨大| 国产精品入口尤物| 91午夜在线播放| 成人激情视频在线观看| 久久精品成人一区二区三区| 91啪国产在线| 欧美在线免费看| 日本成人激情视频| 亚洲激情视频网| 欧美日韩精品二区| 欧美精品久久久久久久| 琪琪亚洲精品午夜在线| 欧美裸体xxxxx| 成人妇女免费播放久久久| 久久精品亚洲一区| 人体精品一二三区| 91老司机在线| 成人精品在线视频| 久久视频免费在线播放| 国产欧美精品日韩精品| 亚洲日本成人网| 久久久精品影院| 欧美性猛交xxxx免费看| 亚洲天堂av女优| 久久久精品一区二区三区| 热久久美女精品天天吊色| 欧美成人亚洲成人日韩成人| 成人在线观看视频网站| 神马国产精品影院av| 日韩av电影免费观看高清| 成人a免费视频| 日韩中文在线视频| 精品视频久久久久久久| 91美女福利视频高清| 亚洲精品一区中文| 欧美大尺度在线观看| 欧美成人精品h版在线观看| 国产精自产拍久久久久久| 懂色av影视一区二区三区| 精品毛片网大全| 91精品综合视频| 久久伊人色综合| 亚洲精品456在线播放狼人| 91精品视频免费看| 亚洲欧美国产va在线影院| 欧美黑人一级爽快片淫片高清| 国产一区二区三区在线观看视频| 久久久久国色av免费观看性色| 欧美成人精品xxx| 国产精品高清免费在线观看| 亚洲偷欧美偷国内偷| 欧美激情视频一区二区| 日本成人黄色片| 久久在线精品视频| 亚洲丝袜av一区| 欧美激情一区二区三区久久久| 欧美大尺度激情区在线播放| 欧美性猛交xxxx免费看| 国产91色在线免费| 国产美女主播一区| 欧美国产激情18| 性欧美办公室18xxxxhd| 亚洲欧美国产精品久久久久久久| 精品国产美女在线| 正在播放国产一区| 中文字幕亚洲无线码在线一区| 亚洲精品www久久久| 亚洲九九九在线观看| 久久精品国产欧美激情| 欧美日韩在线免费| 国产精品白嫩初高中害羞小美女| 成人免费视频网| 丝袜亚洲欧美日韩综合| 久久国产精品久久精品| 青青草国产精品一区二区| 国产精品中文字幕在线| 亚洲jizzjizz日本少妇| 日本久久久久久| 欧美精品一二区| 国产一区二区三区久久精品| 欧美色视频日本高清在线观看| 亚洲国产精品999| 欧美专区第一页| 欧美在线性视频| 一道本无吗dⅴd在线播放一区| 亚洲精品综合久久中文字幕| 亚洲视频在线观看网站| 亚洲成人免费在线视频| 久久精品夜夜夜夜夜久久| 国产91精品久久久久久久| 亚洲天堂网站在线观看视频| 亚洲国产日韩精品在线| 日韩美女视频免费在线观看| 亚洲va男人天堂| 热99在线视频| 国产精品xxxxx| 亚洲天堂成人在线视频| 欧美一乱一性一交一视频| 精品伊人久久97| 亚洲欧美福利视频| 亚洲精品第一国产综合精品| 欧美一级bbbbb性bbbb喷潮片| 九九九热精品免费视频观看网站| 欧美丝袜美女中出在线| 欧美性猛交xxxx乱大交3| 黑人巨大精品欧美一区免费视频| 91精品国产自产在线| 亲爱的老师9免费观看全集电视剧| 富二代精品短视频| 久久五月天综合| 欧美视频在线观看免费网址| 18性欧美xxxⅹ性满足| 亚洲色图日韩av| 一区二区在线视频| 上原亚衣av一区二区三区| 日韩中文字幕免费看| 91大神在线播放精品| 亚洲bt欧美bt日本bt| 久热在线中文字幕色999舞| 久久99精品久久久久久琪琪|