2017-03-09 1377 views
5

試用Vue.js我首先注意到的是,我定義的組件的每個實例是如何定義爲single file component幷包含爲自定義元素的,它們都獲得像data-v-58fd7087=""這樣的隨機哈希屬性。 具體來說:Vue.js組件中的隨機「data-v- *」屬性

    給定組件的每個實例的
  • 每個DOM元素得到
  • 散列獨立地產生的路由器的相同散列
  • 散列是呼叫
  • 散列是穩定之間的穩定在組件的名稱更改之間
  • 散列未在磁盤上存儲/生成
  • 因此散列是動態生成的

難道它是由KarmaWebpack生成的,它們是我Vue設置的一部分嗎?如果不是,這些對我來說是一些令人驚訝的觀察。它導致兩個問題:

  • 何時以及如何生成這個散列(屬性)?
  • 爲什麼生成散列(屬性)?

回答

7

在Vue Loader中使用scoped CSS時會發生類似的情況。

我使用範圍的CSS,我有像data-v-4646bc3c的屬性,所以我想那就是它。

如果您不想使用此功能,請嘗試從單個文件組件中刪除scoped屬性。

<style scoped> 
/* local styles */ 
</style> 
+0

你是對的!所以實際上'data-v- *'屬性來自vue CSS加載器,當且僅當使用'scoped' CSS時。它們被用作選擇器來應用CSS。很好,謝謝! –

+0

有沒有辦法改變這種默認行爲,同時仍然使用有作用域的CSS?因爲它最終會有更大的CSS文件加載和解析......! – ekqnp

+1

@ekqnp:不 - 這是範圍的工作方式,他們需要散列作爲選擇器。 –

0

如果您使用vueify和你想知道爲什麼你得到在構建更改,而無需改變任何東西,請確保您與process.env.NODE_ENV集運行vueify到'production'。否則,它會生成熱重載代碼,每個構建都有新的data-v-*散列。