2017-03-09 1368 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-*散列。