vue가 html에서 {{}}} 나타나는 원인과 해결 방식에 대해 간단히 말하다

3819 단어 vuehtml{{}}
원인:
브라우저 렌더링 메커니즘, 해석 html 구조 -> 외부 스크립트와 스타일시트 파일 불러오기 -> 해석 및 실행 스크립트 코드 -> 구조 htmldom 모델 -> 이미지 등 외부 파일 불러오기 -> 페이지 불러오기 완료.
vue를 초기화한 js는 페이지 밑에 쓰고, 마지막에 js 스크립트를 실행합니다.
그래서 페이지가 처음부터 끝까지 렌더링을 시작할 때, 라벨로 렌더링할 때, vue가 초기화되지 않았기 때문에, 이와 같은 코드가 표시됩니다

{{courseName}}


인터넷 속도가 매우 느릴 때 비교적 똑똑히 볼 수 있어서 사용자로 하여금 버그 같은 것을 착각하게 할 수 있다. 좀 빠르면 깜빡 지나가서 체험이 좋지 않다
해결 방법:
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
구체적인 방법:
파일를 먼저 도입하고,
초기화,
그리고 vue에서 emit를 보내고,
밖에서 감청

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(' , .
'); 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에서 {{}}}}가 나타난 원인과 해결 방식은 바로 편집자가 여러분에게 공유한 모든 내용입니다. 여러분께 참고가 되고 저희를 많이 사랑해 주시기 바랍니다.

좋은 웹페이지 즐겨찾기