浅谈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重建星际争霸
Dec 22 Javascript
javascript数组使用调用方法汇总
Dec 08 Javascript
js 获取class的元素的方法 以及创建方法getElementsByClassName
Mar 11 Javascript
Javascript实现重力弹跳拖拽运动效果示例
Jun 28 Javascript
javascript四舍五入函数代码分享(保留后几位)
Dec 10 Javascript
JavaScript中调用函数的4种方式代码实例
Jul 08 Javascript
Bootstrap编写一个在当前网页弹出可关闭的对话框 非弹窗
Jun 30 Javascript
浅析js的模块化编写 require.js
Dec 07 Javascript
vue-cli安装使用流程步骤详解
Nov 08 Javascript
vue+node实现图片上传及预览的示例方法
Nov 22 Javascript
原生js实现日历效果
Mar 02 Javascript
vue实现登录、注册、退出、跳转等功能
Dec 23 Vue.js
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
与空气斗智斗勇的经典《Overlord》,传说中的“无稽之谈”
2020/04/09 日漫
zf框架的数据库追踪器使用示例
2014/03/13 PHP
WIN8.1下搭建PHP5.6环境
2015/04/29 PHP
Laravel 默认邮箱登录改成用户名登录的实现方法
2019/08/12 PHP
谷歌浏览器 insertCell与appendChild的区别
2009/02/12 Javascript
js charAt的使用示例
2014/02/18 Javascript
javascript实现全局匹配并替换的方法
2015/04/27 Javascript
jQuery实现文件上传进度条特效
2015/08/12 Javascript
详解Bootstrap各式各样的按钮(推荐)
2016/12/13 Javascript
微信小程序 本地数据读取实例
2017/04/27 Javascript
js实现左右两侧浮动广告
2018/07/09 Javascript
JS常见构造模式实例对比分析
2018/08/27 Javascript
基于element-ui的rules中正则表达式
2018/09/04 Javascript
解决vue 表格table列求和的问题
2019/11/06 Javascript
Python3.x和Python2.x的区别介绍
2013/02/12 Python
Python入门及进阶笔记 Python 内置函数小结
2014/08/09 Python
Python的Django框架中if标签的相关使用
2015/07/15 Python
python实现人脸识别代码
2017/11/08 Python
python tensorflow基于cnn实现手写数字识别
2018/01/01 Python
python机器学习理论与实战(六)支持向量机
2018/01/19 Python
基于Pandas读取csv文件Error的总结
2018/06/15 Python
python实现播放音频和录音功能示例代码
2018/12/30 Python
Python对列表的操作知识点详解
2019/08/20 Python
详细分析Python垃圾回收机制
2020/07/01 Python
基于python实现监听Rabbitmq系统日志代码示例
2020/11/28 Python
python中pickle模块浅析
2020/12/29 Python
python 利用openpyxl读取Excel表格中指定的行或列教程
2021/02/06 Python
新员工培训个人的自我评价
2013/10/09 职场文书
安全检查管理制度
2014/02/02 职场文书
小学生开学感言
2014/02/28 职场文书
怎样拟定创业计划书
2014/05/01 职场文书
行政执法队伍作风整顿剖析材料
2014/10/11 职场文书
学习社交礼仪心得体会
2016/01/22 职场文书
《最后一头战象》教学反思
2016/02/16 职场文书
python某漫画app逆向
2021/03/31 Python
nginx 添加http_stub_status_module模块
2022/05/25 Servers