互联网技术 · 2024年2月9日

如何避免Vue小项目中的闪现画面效果

这篇文章主要介绍了小项目中怎么防止Vue的闪现画面效果,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

一句话总结

HTML: 元素加上v-cloak

CSS: [v-cloak]{display: none}

过程

页面刚加载的时候胡子语法会显示出来。

v-cloak是VueJS小型项目中提升用户体验简单且重要的方法。

用法

HTML中在你需要组织闪现的标签上加上v-cloak

<div id=”app”>
<nav>blabla</nav>
<main v-cloak>{{text}}</main>
</div>

CSS中给v-cloak设定样式,这个样式是只有【在vue实例编译结束前】应用的样式。

[v-cloak]{
display: none;
}

原理

我没读完源码,但是v-cloak的原理我大概理解一点:

首先是CSS选择器,用[target]选择的是“带有 target 属性所有元素。”。可以点这里复习选择器。

那么[v-cloak]选择出来的就是所有带有v-cloak属性的元素了。

实例初始化完成之后,VueJS中会把Vue中特有的attribute去掉。在实例初始化完成之前,上面写的main的HTML代码实际是这样的:

<main id=”main” class=”row” v-cloak=””>

然后加上CSS,就把所有带有v-cloak的元素都display: block了。

其实不止是v-cloak,你可以用v-if来试试,CSS里使用[v-if]{display:none},效果看起来是一样的。和v-cloak一样,v-if也是在实例编译完之后去掉。

源码

然后我刚才去读了一下源码,大概是这一段,感兴趣的大佬可以去搜搜读读理解理解。

if (isRealElement) {
// mounting to a real element
// check if this is server-rendered content and if we can perform
// a successful hydration.
if (oldVnode.nodeType === 1 && oldVnode.hasAttribute(SSR_ATTR)) {
oldVnode.removeAttribute(SSR_ATTR);
hydrating = true;
}
}

到此这篇关于小项目中怎么防止Vue的闪现画面效果的文章就介绍到这了,更多相关小项目vue闪现画面内容请搜索脚本之家以前的文章或继续浏览下面的相关文章,希望大家以后多多支持脚本之家!

OpenMagic API

Need more than content? Move into the product flow.

If you are here for model access, pricing, developer docs, or the future API console, the dedicated product path now lives on api.openmagic.ai.

登录免费注册