浅谈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 相关文章推荐
JS表格组件神器bootstrap table详解(基础版)
Dec 08 Javascript
JS实现上下左右对称的九九乘法表
Feb 22 Javascript
jQuery使用ajax跨域获取数据的简单实例
May 18 Javascript
jQuery ajax中使用confirm,确认是否删除的简单实例
Jun 17 Javascript
javascript中Date对象应用之简易日历实现
Jul 12 Javascript
easyui中combotree循环获取父节点至根节点并输出路径实现方法
Nov 10 Javascript
jQuery插件HighCharts绘制2D柱状图、折线图的组合双轴图效果示例【附demo源码下载】
Mar 09 Javascript
Angular 2父子组件数据传递之@ViewChild获取子组件详解
Jul 04 Javascript
详解vue 计算属性与方法跟侦听器区别(面试考点)
Apr 23 Javascript
vue项目中使用百度地图的方法
Jun 08 Javascript
js实现div色块拖动录制
Jan 16 Javascript
Element Dialog对话框的使用示例
Jul 26 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
windwos下使用php连接oracle数据库的过程分享
2014/05/26 PHP
将酷狗krc歌词解析并转换为lrc歌词php源码
2014/06/20 PHP
PHP反射机制原理与用法详解
2017/02/15 PHP
EasyUi tabs的高度与宽度根据IE窗口的变化自适应代码
2010/10/26 Javascript
计算世界完全对称日的js代码,粗糙版
2011/11/04 Javascript
jQuery实现扑克正反面翻牌效果
2017/03/10 Javascript
微信小程序 input输入及动态设置按钮的实现
2017/10/27 Javascript
CSS3结合jQuery实现动画效果及回调函数的实例
2017/12/27 jQuery
Vue-cli中为单独页面设置背景色的实现方法
2018/02/11 Javascript
JavaScript引用类型之基本包装类型实例分析【Boolean、Number和String】
2018/08/09 Javascript
教你如何用Node实现API的转发(某音乐)
2019/09/20 Javascript
ElementUI中el-tree节点的操作的实现
2020/02/27 Javascript
python中根据字符串调用函数的实现方法
2016/06/12 Python
Python双精度浮点数运算并分行显示操作示例
2017/07/21 Python
python 机器学习之支持向量机非线性回归SVR模型
2019/06/26 Python
关于Pytorch的MNIST数据集的预处理详解
2020/01/10 Python
Python PyQt5整理介绍
2020/04/01 Python
跑步、骑行和铁人三项的高性能眼镜和服装:ROKA
2018/07/06 全球购物
PHP中如何创建和修改数组
2012/05/02 面试题
物流管理专业大学生自荐信
2013/10/04 职场文书
中学生班主任评语
2014/01/30 职场文书
爱国卫生月实施方案
2014/02/21 职场文书
节能减排倡议书
2014/04/15 职场文书
实验室标语
2014/06/21 职场文书
汉语专业毕业生自荐信
2014/07/06 职场文书
关于读书的活动方案
2014/08/14 职场文书
纪律教育月活动总结
2014/08/26 职场文书
倡议书的写法
2014/08/30 职场文书
道路交通事故人身损害赔偿协议书
2014/11/19 职场文书
2015法院个人工作总结范文
2015/05/25 职场文书
消防宣传语大全
2015/07/13 职场文书
详解Redis复制原理
2021/06/04 Redis
PostgreSQL解析URL的方法
2021/08/02 PostgreSQL
MySQL 字符集 character
2022/05/04 MySQL
vue实现登陆页面开发实践
2022/05/30 Vue.js
Spring中的@Transactional的工作原理
2022/06/05 Java/Android