亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

淺談vue在html中出現(xiàn){{}}的原因及解決方式

瀏覽:4日期:2022-10-28 10:26:07

原因:

瀏覽器渲染機(jī)制,解析html結(jié)構(gòu) -> 加載外部腳本和樣式表文件 -> 解析并執(zhí)行腳本代碼 -> 構(gòu)造html dom模型 -> 加載圖片等外部文件 -> 頁(yè)面加載完畢。

初始化vue的js寫在頁(yè)面底部,也就是最后才執(zhí)行js腳本。

所以頁(yè)面從頭到尾開始渲染時(shí),渲染到標(biāo)簽時(shí),由于vue還未初始化,所以就會(huì)顯示類似這樣的代碼

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

當(dāng)網(wǎng)速很慢的時(shí)候就看得比較清楚,可能會(huì)讓用戶誤以為bug之類的,快一點(diǎn)的話就是一閃而過(guò),體驗(yàn)不是很好

解決辦法:

1、網(wǎng)上說(shuō)的很多都是用v-cloak,

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

但是我用了下無(wú)效,可能哪里使用的不對(duì)?然后就干脆按自己的思路實(shí)現(xiàn)了

2、我現(xiàn)在實(shí)現(xiàn)解決的方式,給最外層div加個(gè)class=’hide’(.hide{display: none},注意這個(gè)樣式要寫在head里),然后在vue初始化完成后,移除這個(gè)類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>標(biāo)題</title> <style> .hide{ display: none; } </style></head><body> <div 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>

補(bǔ)充知識(shí):原生js和vue之間的數(shù)據(jù)通訊--EventEmitter

有個(gè)小項(xiàng)目在原來(lái)原生的框架編寫,但是不想寫原生,就引入了vue

然后有個(gè)需求要和原生的js進(jìn)行交互通訊,于是就可以用node.js EventEmitter

具體做法:

先引入文件<script src='http://www.aoyou183.cn/js/eventEmitter.js'></script>,

初始化,

然后在vue里面發(fā)送emit,

在外面監(jiān)聽on

var event = new EventEmitter();$(document).ready(function () { //監(jiān)聽some_event事件 event.on(’some_event’, function (data) { });}) let vm = new Vue({ el: '#app', methods: { getList() { // 觸發(fā)事件 event.emit(’some_event’,’params’); }, }});

附上eventEmitter.js

class EventEmitter { constructor() { this.event = {}; this.maxListerners = 10; } // 監(jiān)聽 on(type, listener) { if (this.event[type]) { if (this.event[type].length >= this.maxListerners) { console.error(’同一個(gè)監(jiān)聽器最多被十個(gè)對(duì)象監(jiān)聽,否則可能造成內(nèi)存泄漏.n’); return; } if (!this.event[type].includes(listener)) {this.event[type].push(listener); } } else { this.event[type] = [listener]; } } //發(fā)送監(jiān)聽 emit(type, ...rest) { if (this.event[type]) { this.event[type].map(fn => fn.apply(this, rest)); } } //移除監(jiān)聽器 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]; } } } //移除所有的監(jiān)聽器 removeAllListener() { this.event = {}; }}

以上這篇淺談vue在html中出現(xiàn){{}}的原因及解決方式就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Vue
相關(guān)文章:
主站蜘蛛池模板: 韩国无遮挡三级伦在线大全 | 国产精品你懂的在线播放调教 | 三级网站| 草草草草视频 | 91精品国产自产91精品 | 欧美另类老人xxxx | 黄色三级免费网站 | free性欧美chinese乱子 | 五月婷婷六月合 | 亚洲第一网址 | 热re91久久精品国产91热 | 欧美gogo高清bbw | 国产在线视频欧美亚综合 | 国产精品福利视频萌白酱g 国产精品福利影院 | 精品一成人岛国片在线观看 | 亚洲美女视频一区 | 国产精品自拍视频 | 国产色视频网站免费观看 | 国产大片中文字幕在线观看 | 永久精品免费影院在线观看网站 | 国产自在自线2021 | 一级裸片| 黄色免费一级 | 日韩欧美在线观看视频一区二区 | 一级网站在线观看 | 免费看一级黄色 | 国产一级一级片 | 国产一区二区三区日韩欧美 | 高清成人综合 | 欧美一级毛片欧美一级成人毛片 | 日本一区二区不卡视频 | 国产日本欧美亚洲精品视 | 伊人院| 久久乐国产精品亚洲综合m3u8 | 国产免费网站看v片元遮挡 国产免费自拍 | 9l国产精品久久久久麻豆 | 国产真实乱人偷精品 | 免费在线观看一区二区 | 国产成人综合久久精品亚洲 | 国产18岁| 日韩在线第一区 |