浅谈vue在html中出现{{}}的原因及解决方式


Posted in Javascript onNovember 16, 2020

原因:

浏览器渲染机制,解析html结构 -> 加载外部脚本和样式表文件 -> 解析并执行脚本代码 -> 构造html dom模型 -> 加载图片等外部文件 -> 页面加载完毕。

初始化vue的js写在页面底部,也就是最后才执行js脚本。

所以页面从头到尾开始渲染时,渲染到标签时,由于vue还未初始化,所以就会显示类似这样的代码

<h2>{{courseName}}</h2>

当网速很慢的时候就看得比较清楚,可能会让用户误以为bug之类的,快一点的话就是一闪而过,体验不是很好

解决办法:

1、网上说的很多都是用v-cloak,

<div id="app" v-cloak>
  {{context}}
</div>
[v-cloak]{
  display: none;
}

但是我用了下无效,可能哪里使用的不对?然后就干脆按自己的思路实现了

2、我现在实现解决的方式,给最外层div加个class='hide'(.hide{display: none},注意这个样式要写在head里),然后在vue初始化完成后,移除这个类hide,大概代码如下

<!DOCTYPE html>
<html lang="en">
 
<head>
 <meta charset="utf-8">
 <meta http-equiv="X-UA-Compatible" content="IE=edge">
 <meta name="viewport"
  content="width=device-width, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no, viewport-fit=cover">
 <title>标题</title>
 <style>
  .hide{
   display: none;
  }
 </style>
</head>
<body>
 <div id="app" class="hide">
  <h2>{{courseName}}</h2>
 </div>
 <script>
  //初始化vue
  initVue()
 
  function initVue() {
   new Vue({
    el: '#app',
    data: function () {
     return {
      datas:{
       courseName:''
      }
     }
    },
    mounted() {
     //移除隐藏样式
     document.querySelector('#app').classList.remove('hide')
    }
   })
  }
 </script>
</body>

补充知识:原生js和vue之间的数据通讯--EventEmitter

有个小项目在原来原生的框架编写,但是不想写原生,就引入了vue

然后有个需求要和原生的js进行交互通讯,于是就可以用node.js EventEmitter

具体做法:

先引入文件<script src="../../js/eventEmitter.js"></script>,

初始化,

然后在vue里面发送emit,

在外面监听on

var event = new EventEmitter();
$(document).ready(function () {
  //监听some_event事件
  event.on('some_event', function (data) {
    
  });
})
 
let vm = new Vue({
  el: "#app",
  methods: {
    getList() {
      // 触发事件
      event.emit('some_event','params');
    },
  }
});

附上eventEmitter.js

class EventEmitter {
 constructor() {
  this.event = {};
  this.maxListerners = 10;
 }
 // 监听
 on(type, listener) {
  if (this.event[type]) {
   if (this.event[type].length >= this.maxListerners) {
    console.error('同一个监听器最多被十个对象监听,否则可能造成内存泄漏.\n');
    return;
   }
      if (!this.event[type].includes(listener)) {
        this.event[type].push(listener);
      }
  } else {
   this.event[type] = [listener];
  }
 }
 //发送监听
 emit(type, ...rest) {
  if (this.event[type]) {
   this.event[type].map(fn => fn.apply(this, rest));
  }
 }
 //移除监听器
 removeListener(type,func) {
  if (this.event[type]) {
      this.event[type] = this.event[type].filter(item => item !== func);
      if (this.event[type].length === 0) {
        delete this.event[type];
      }
  }
 }
 //移除所有的监听器
 removeAllListener() {
  this.event = {};
 }
}

以上这篇浅谈vue在html中出现{{}}的原因及解决方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript 简单高效判断数据类型 系列函数 By shawl.qiu
Mar 06 Javascript
改版了网上的一个js操作userdata
Apr 27 Javascript
网页和浏览器兼容性问题汇总(draft1)
Jun 01 Javascript
javascript使用activex控件的代码
Jan 27 Javascript
原生Javascript封装的一个AJAX函数分享
Oct 11 Javascript
如何使用HTML5地理位置定位功能
Apr 27 Javascript
jquery实现仿新浪微博评论滚动效果
Aug 06 Javascript
JavaScript中 ES6 generator数据类型详解
Aug 11 Javascript
js实现适合新闻类图片的轮播效果
Feb 05 Javascript
Angular2利用组件与指令实现图片轮播组件
Mar 27 Javascript
Angular 4依赖注入学习教程之ValueProvider的使用(七)
Jun 04 Javascript
详解vue-cli 本地开发mock数据使用方法
May 29 Javascript
vue组件中传值EventBus的使用及注意事项说明
Nov 16 #Javascript
小程序自定义弹框效果
Nov 16 #Javascript
vuex中遇到的坑,vuex数据改变,组件中页面不渲染操作
Nov 16 #Javascript
基于Vue+Webpack拆分路由文件实现管理
Nov 16 #Javascript
小程序实现上下切换位置
Nov 16 #Javascript
小程序实现点击tab切换左右滑动
Nov 16 #Javascript
微信小程序实现滚动Tab选项卡
Nov 16 #Javascript
You might like
php中转义mysql语句的实现代码
2011/06/24 PHP
在项目中寻找代码的坏命名
2012/07/14 PHP
在windows服务器开启php的gd库phpinfo中未发现
2013/01/13 PHP
discuz目录文件资料汇总
2014/12/30 PHP
PHP模拟asp中response类实现方法
2015/08/08 PHP
PHP常用操作类之通信数据封装类的实现
2017/07/16 PHP
javascript firefox不显示本地预览图片问题的解决方法
2008/11/12 Javascript
JS模块与命名空间的介绍
2013/03/22 Javascript
parentElement,srcElement的使用小结
2014/01/13 Javascript
Javascript浮点数乘积运算出现多位小数的解决方法
2014/02/17 Javascript
javascript自定义in_array()函数实现方法
2015/08/03 Javascript
ashx文件获取$.ajax()方法发送的数据
2016/05/26 Javascript
浅谈jquery中使用canvas的问题
2016/10/10 Javascript
JS中type=&quot;button&quot;和type=&quot;submit&quot;的区别
2017/07/04 Javascript
JavaScript实现设置默认日期范围为最近40天的方法分析
2017/07/12 Javascript
vue中使用refs定位dom出现undefined的解决方法
2017/12/21 Javascript
JavaScript 禁止用户保存图片的实现代码
2020/04/28 Javascript
JavaScript面试中常考的字符串操作方法大全(包含ES6)
2020/05/10 Javascript
Python中列表元素转为数字的方法分析
2016/06/14 Python
python3中set(集合)的语法总结分享
2017/03/24 Python
Python查看微信撤回消息代码
2018/06/07 Python
Python字典中的键映射多个值的方法(列表或者集合)
2018/10/17 Python
Python模块的制作方法实例分析
2019/12/21 Python
HTML5+CSS3模仿优酷视频截图功能示例
2017/01/05 HTML / CSS
美国女性卫生用品公司:Thinx
2017/06/30 全球购物
New Balance德国官方网站:购买鞋子和服装
2019/08/31 全球购物
如何打造一封优秀的留学推荐信
2014/01/25 职场文书
初中生自我评价
2014/02/01 职场文书
秋季运动会广播稿
2014/02/22 职场文书
会计演讲稿范文
2014/05/23 职场文书
幼儿园感谢信
2015/01/21 职场文书
2015安全保卫工作总结
2015/04/25 职场文书
上级领导检查欢迎词
2015/09/30 职场文书
2016年师德师风学习心得体会
2016/01/12 职场文书
Python中的嵌套循环详情
2022/03/23 Python
Python使用Web框架Flask开发项目
2022/06/01 Python