Vue 3 — HTML 및 지시문

https://www.amazon.com/John-Au-Yeung/e/B08FT5NT62에서 Amazon에서 내 책을 확인하십시오.

지금 http://jauyeung.net/subscribe/에서 내 이메일 목록을 구독하십시오.

Vue 3는 베타 버전이며 변경될 수 있습니다.

Vue 3는 Vue 프런트 엔드 프레임워크의 최신 버전입니다.

Vue 2의 인기와 사용 편의성을 기반으로 합니다.

이 기사에서는 Vue 3로 템플릿을 만드는 방법을 살펴보겠습니다.

원시 HTML


v-html 지시문을 사용하여 원시 HTML을 렌더링할 수 있습니다.

예를 들어 다음과 같이 작성할 수 있습니다.

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>App</title>
    <script src="https://unpkg.com/vue@next"></script>
  </head>
  <body>
    <div id="app">
      <p>{{ rawHtml }}</p>
      <p><span v-html="rawHtml"></span></p>
    </div>
    <script>
      const vm = Vue.createApp({
        data() {
          return {
            rawHtml: `<b>foo</b>`
          };
        }
      }).mount("#app");
    </script>
  </body>
</html>

rawHtml 메서드에서 반환하는 객체와 함께 반환된 data 속성이 있습니다.

원시 HTML을 콧수염에 전달하면 삭제됩니다. 이것은 원시 코드가 표시됨을 의미합니다.
v-html 지시문에 전달하면 HTML로 표시되므로 굵게 표시됩니다.

따라서 v-html를 사용할 경우 크로스 사이트 스크립팅 취약점에 주의해야 합니다.

신뢰할 수 있는 콘텐츠만 v-html로 표시해야 합니다.  .

속성



속성 값을 동적으로 설정하려면 v-bind 지시문을 사용해야 합니다.

예를 들어 다음과 같이 작성할 수 있습니다.

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>App</title>
    <script src="https://unpkg.com/vue@next"></script>
  </head>
  <body>
    <div id="app">
      <div v-bind:id="dynamicId"></div>
    </div>
    <script>
      const vm = Vue.createApp({
        data() {
          return {
            dynamicId: `foo`
          };
        }
      }).mount("#app");
    </script>
  </body>
</html>

id를 사용하여 div의 foo 속성을 v-bind로 설정합니다.

부울 속성이 있는 경우 해당 속성이 있다는 것은 값을 true  로 설정했음을 의미합니다.

예를 들어 다음과 같이 작성할 수 있습니다.

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>App</title>
    <script src="https://unpkg.com/vue@next"></script>
  </head>
  <body>
    <div id="app">
      <button v-bind:disabled="disabled">Button</button>
    </div>
    <script>
      const vm = Vue.createApp({
        data() {
          return {
            disabled: true
          };
        }
      }).mount("#app");
    </script>
  </body>
</html>

disabled 값을 v-bind:disabled , 즉 true 에 전달하여 버튼을 비활성화했습니다.

자바스크립트 표현식



이중 중괄호 사이에 JavaScript 표현식을 넣을 수 있습니다.

예를 들어 다음과 같이 작성할 수 있습니다.

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>App</title>
    <script src="https://unpkg.com/vue@next"></script>
  </head>
  <body>
    <div id="app">
      {{message.split('').reverse().join('')}}
    </div>
    <script>
      const vm = Vue.createApp({
        data() {
          return {
            message: "hello world"
          };
        }
      }).mount("#app");
    </script>
  </body>
</html>


템플릿에서 반전'hello world'합니다.

문장이 아닌 단일 표현식만 넣을 수 있으므로 다음과 같이 작성할 수 없습니다.

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>App</title>
    <script src="https://unpkg.com/vue@next"></script>
  </head>
  <body>
    <div id="app">
      {{ var a = 1 }}}
    </div>
    <script>
      const vm = Vue.createApp({
        data() {
          return {
            message: "hello world"
          };
        }
      }).mount("#app");
    </script>
  </body>
</html>


Vue 템플릿 컴파일러에서 오류가 발생합니다.

지시문



지시문은 v-  로 시작하는 특수 속성입니다.

그들이 기대하는 값은 단일 JavaScript 표현식입니다.
v-forv-on는 이에 대한 예외입니다.

표현식의 값이 변경되면 DOM에 반응적으로 부작용을 적용합니다.

예를 들어 다음과 같이 작성할 수 있습니다.

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>App</title>
    <script src="https://unpkg.com/vue@next)"></script>
  </head>
  <body>
    <div id="app">
      <p v-if="show">hello world</p>
    </div>
    <script>
      const vm = Vue.createApp({
        data() {
          return {
            show: true
          };
        }
      }).mount("#app");
    </script>
  </body>
</html>

v-if 이후 show를 사용하여 'hello world' 메시지를 표시하려면 true  .
v-if는 값이 참일 때 무언가를 표시하는 지시문입니다.

결론



템플릿은 원시 HTML, 속성 및 지시문을 가질 수 있습니다.

지시문은 값을 취하는 특수 속성입니다.

좋은 웹페이지 즐겨찾기