vue 學習篇

當沒有使用模塊系統(tǒng)時

沒有模塊系統(tǒng) (比如 webpack 或 Browserify) 的應用中,存在一種任何重 JS 前端應用都常用的模式:一個全局的 App 對象。

如果你想要添加的東西跟 Vue 本身沒有太多關系,那么這是一個不錯的替代方案。舉個例子:

var App = Object.freeze({
  name: 'My App',
  version: '2.1.4',
  helpers: {
    // 這是我們之前見到過的 `$reverseText` 方法
    // 的一個純函數(shù)版本
    reverseText: function (text) {
      return text
        .split('')
        .reverse()
        .join('')
    }
  }
})

如果你在好奇 Object.freeze,它做的事情是阻止這個對象在未來被修改。這實質上是將它的屬性都設為了常量,避免在未來出現(xiàn)狀態(tài)的 bug。

現(xiàn)在這些被共享的屬性的來源就更加明顯了:在應用中的某個地方有一個被定義好的 App 對象。你只需在項目中搜索就可以找到它。

這樣做的另一個好處是 App 可以在你代碼的任何地方使用,不管它是否是 Vue 相關的。包括向實例選項直接附加一些值而不必進入一個函數(shù)去訪問 this 上的屬性來得到這些值:

new Vue({
  data: {
    appVersion: App.version
  },
  methods: {
    reverseText: App.helpers.reverseText
  }
})

當使用模塊系統(tǒng)時

當使用模塊系統(tǒng)的時候,你可以輕松地把共享的代碼組織成模塊,然后把那些模塊 require/import 到任何你所需要的地方。這是一個典型的顯式做法,因為在每個文件里你都能得到一份依賴清單。你可以準確地知道每個依賴的來歷。

雖然毫無疑問它更啰嗦,但是這種方法確實是最可維護的,尤其是當和多人一起協(xié)作一個大型應用的時候。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容