背景:前端
一個項目完工在即,鑑於此,前端使用了vue,寫下此欄,以供往後翻閱, 會涉及到我所運用到的vue相關知識,須要必定的js基礎。 默認vue的single-file-components(單文件組件開發)既sfc。
本文主題vue
咱們先看vue裏哪裏能存放數據:vuex
1.單個vue文件裏。
2.官方插件vuex,做爲一個集中管理常常複用的數據頗有用。
3.直接聲明在vue實例上,用$號標識。api
第一種狀況下存放數據對於單個文件又分這幾種屬性
1.1 data(常規使用,默認函數返回:忘記爲啥了)
1.2 computed(計算,也就說,這是一個基於其餘屬性的屬性)
1.3 watch(監聽屬性,官方推薦在此分類下的屬性用於觸發異步函數)
1.4 props(特殊,用來接收父組件向子組件傳遞的屬性)
1.5 propsData(特殊,貌似是用來測試的)框架
第二種狀況下數據存放都在state裏
第三種狀況是特別特別特別的,不討論(都有vux,還用什麼$號啊)。異步
數據傳遞也分幾種狀況
1.全局傳遞。
2.父向子傳遞。
3.子向父傳遞。函數
第一種狀況,請使用vuex,注意刷新會清空
第二種狀況,子聲明props,父在子組件上聲明這個屬性,就能傳遞下去
第三種狀況,通常狀況就用事件提交,父監聽子聲明的事件,而後就能接收到了測試
這裏對props和事件作個特殊說明,假如運用了第三方的vue框架,你可能就是封裝一下
對方的組件使其變成專用的子組件,這個時候,方法啊,屬性啊,都在第三方組件上
而你封裝的木有。若是一個個在去聲明,第三方組件的props或者event着實累,天然有
簡便的api啦。vm.$attrs,vm.$listener,而後你封裝的子組件就把全部事件和屬性都會被
第三方的組件所監聽。vm.$listener,除法你開發了特殊的指令,不然,不用官網那樣聲明,第三方聲明的事件都會被監聽。插件
有如下幾個note:
1.computedcode
別去修改,自己就是基於依賴,可是computed是個很好的展現數據容器。它本來是隻有get方法,可是能夠聲明set方法。
2.watch
有兩個屬性,deep和immediate,一個是深度檢測,一個是當即執行,至關於任務隊列的第一個觸發,deep不如直接用"foo.bar"的形式來監視.
若是同時監視N個屬性,而這幾個屬性又都有關聯性,我的推薦,這個時候,不要用watch,不如去監聽事件,用switch語句更加方便,尤爲是在有異步方法存在的時候,異步隊列搞得心都碎了。
3.props
最好有默認值
4.比較簡單便捷的方式,是引用某個組件,參開api裏的ref。