ITPub博客

首页 > 应用开发 > IT综合 > vuejs在解析时出现闪烁的原因及防止闪烁的方法

vuejs在解析时出现闪烁的原因及防止闪烁的方法

IT综合 作者:ii_chengzi 时间:2019-06-09 13:49:53 0 删除 编辑

在使用vuejs、angularjs开发时,经常会遇见在如Ch rom e这类能够快速解析的浏览器上出现表达式({{ express }} ),或者是 模块 (div)的闪烁。对于这个问题由于 Java Script去操作DOM,都会等待DOM加载完成(DOM ready)。对于vuejs、angularjs这些会在DOM ready完会才回去解析html view Template,所以对于Chrome这类快速的浏览器你会看见有闪烁的情况出现。而对于IE7,8这类解析稍慢的浏览器大部分情况下是不会出现这个问题的。

  解决方法:

  在vuejs、angularjs中为我们提供了v-cloak、ng-cloak来实现防止闪烁的方案,同时对于bing文字({{ express }} )我们也可以改为v-bind、ng-bind来实现避免。

  下面以vuejs为例:

  #v-cloak

  用法:

  这个指令保持在元素上直到关联实例结束编译。和 CSS 规则如 [v-cloak] {  display : none } 一起用时,这个指令可以隐藏未编译的 Mustache 标签直到实例准备完毕。

  示例:

  ?

  1

  2

  3

  4

  5

  6

  [v-cloak] {

  display: none;

  }

  <div v-cloak>

  {{  message  }}

  </div>

  <div> 不会显示,直到编译结束。

  原理:

  带有v-clock的的元素设置为display:none,隐藏掉,在等到vue解析到带有v-clock的节点时候,会把attribute和class同时remove掉,这样就可以实现防止节点的闪烁。

  实例:

  ?

  1

  2

  3

  4

  5

  6

  //example1:

  <span>{{price}}</span>

  //example2:

  <span v-bind="price">http://www.9ask.cn/xiamen/</span>

  //example3:

  <span v-cloak>{{price}}</span>

  上例子2和例子3实现的效果是一样的,而例子1在vuejs解析{{price}}之前, 用户 是可以看到"{{price}}"这个字符串的。而例子2和例子3不会有这种闪烁的情况。

http://shenzhen.offcn.com/

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31543790/viewspace-2647135/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2018-06-26

  • 博文量
    264
  • 访问量
    342575