• 有点东西,template可以直接使用setup语法糖中的变量原来是因为这个


    前言

    我们每天写vue3代码的时候都会使用到setup语法糖,那你知道为什么setup语法糖中的顶层绑定可以在template中直接使用的呢?setup语法糖是如何编译成setup函数的呢?本文将围绕这些问题带你揭开setup语法糖的神秘面纱。注:本文中使用的vue版本为3.4.19

    关注公众号:【前端欧阳】,给自己一个进阶vue的机会

    看个demo

    看个简单的demo,代码如下:

    <template>
      <h1>{{ msg }}h1>
      <h2>{{ format(msg) }}h2>
      <h3>{{ title }}h3>
      <Child />
    template>
    
    <script lang="ts" setup>
    import { ref } from "vue";
    import Child from "./child.vue";
    import { format } from "./util.js";
    
    const msg = ref("Hello World!");
    
    let title;
    
    if (msg.value) {
      const innerContent = "xxx";
      console.log(innerContent);
      title = "111";
    } else {
      title = "222";
    }
    script>
    
    

    在上面的demo中定义了四个顶层绑定:Child子组件、从util.js文件中导入的format方法、使用ref定义的msg只读常量、使用let定义的title变量。并且在template中直接使用了这四个顶层绑定。

    由于innerContent是在if语句里面的变量,不是