像这种简单的访问与修改会造成在Vue加载完成前,HTML依然会显示其源码:

<div id="app">
	<p>Hey {{fullname()}}</p>
</div>

在网速慢的时候更加明显,可以通过浏览器开发者工具来限制自己的网速来检查一下,并且通过 Ctrl+F5 来刷新页面的同时清除缓存:

v-cloak + css设置 display: none

解决方法是在 app 元素上添加一个 v-cloak 属性:

<div id="app" v-cloak>

同时在CSS中通过 [] 来访问 vue 属性来设置所有带 v-cloak 属性的元素消失即可:

[v-cloak] {
display:none;
}

v-cloak 属性是当网页加载完毕时自动从包含该属性的元素上删除该属性。

v-if 或 v-show

v-show 因为会保留html元素,更影响页面刚加载时的性能,但在 display 切换时不需要再次渲染,会更快。

v-if 则会直接在html中移出该元素,因此页面刚加载时会更快,但每次切换显示时都要重新删除或者重新加载,更慢些。