当前位置: 首页 > news >正文

网站两列导航在线生成个人网站免费

网站两列导航,在线生成个人网站免费,沈阳网站建站公司,网站建设仟金手指专业15Vue3 的 setup 语法糖是通过 <script setup> 标签启用的特性&#xff0c;它是对 Composition API 的进一步封装&#xff0c;旨在简化组件的声明式写法&#xff0c;同时保留 Composition API 的逻辑组织能力。以下是其核心概念和原理分析&#xff1a; 一、<script setu…

Vue3 的 setup 语法糖是通过 <script setup> 标签启用的特性,它是对 Composition API 的进一步封装,旨在简化组件的声明式写法,同时保留 Composition API 的逻辑组织能力。以下是其核心概念和原理分析:


一、<script setup> 是什么?

  1. 语法糖本质
    它是 Vue3 编译器在编译阶段对组件逻辑的语法转换工具。开发者用更简洁的语法编写逻辑,最终会被编译成标准 setup() 函数的返回形式。

  2. 主要特性

    • 自动暴露顶层变量(无需 return
    • 直接使用 await(自动生成异步包装)
    • 组件/指令自动注册(无需 components 选项)
    • 支持 TypeScript 类型推导(如 defineProps

二、语法糖的编译原理

以下是一个代码转换示例,展示 <script setup> 如何被编译为传统写法:

原始代码(语法糖):
<script setup>
import { ref } from 'vue'
import MyComponent from './MyComponent.vue'const count = ref(0)
const increment = () => count.value++
</script>
编译后代码:
export default {setup() {const count = ref(0)const increment = () => count.value++// 自动返回所有顶层变量return {count,increment,MyComponent // 自动注册组件}},components: {MyComponent // 编译器自动处理组件注册}
}

三、关键技术实现

  1. 编译阶段转换
    Vue 编译器(如 @vue/compiler-sfc)会在构建时:

    • 提取 <script setup> 中的顶层变量
    • 自动生成 return 语句暴露这些变量
    • import 的组件转换为 components 选项
  2. 响应式绑定
    refreactive 变量会被编译器识别,生成对应的 Proxy 响应式代码。

  3. 宏函数处理
    definePropsdefineEmits 是编译时的特殊宏,编译器会将其转换为标准的 props/emits 声明:

    <script setup>
    const props = defineProps({ msg: String })
    const emit = defineEmits(['submit'])
    </script>
    

    编译为:

    export default {props: { msg: String },emits: ['submit'],setup(props, { emit }) {// ...}
    }
    

    需要注意的是,Vue从3.5版本开始,已经支持响应式解构Props,也就是当在同一个 script setup 块中的代码访问从 defineProps 解构出的变量时,Vue 的编译器会自动在前面添加 props.

    const { foo } = defineProps(['foo'])watchEffect(() => {// 在 3.5 之前仅运行一次// 在 3.5+ 版本中会在 "foo" prop 改变时重新运行console.log(foo)})
    

    编译为:

    const props = defineProps(['foo'])watchEffect(() => {// `foo` 由编译器转换为 `props.foo`console.log(props.foo)})
    

四、优势与适用场景

特性传统 setup 函数<script setup>
代码量需显式 return自动暴露顶层变量
组件注册需在 components 声明自动注册导入的组件
异步逻辑需手动包装异步上下文直接使用 await
TypeScript 支持需类型断言自动推导 props/emit 类型

适用场景:适用于需要清晰逻辑组织的复杂组件,尤其是需要 TypeScript 强类型支持或大量 Composition API 复用的场景。


五、@vue/compiler-sfc核心解析

@vue/compiler-sfc是Vue官方的单文件(SFC)编译器,负责将.vue文件解析为标准的JavaScript模块,它的主要任务包括:

  1. 分离<template><script><style> 三大块
  2. 处理模版编译为渲染函数
  3. 转换 <script setup> 语法糖
  4. 处理 CSS 作用域(Scoped CSS)
关键功能实现
  • 模板编译
    将 HTML-like 模板转换为 虚拟 DOM 渲染函数

    <!-- 输入 -->
    <template><div @click="count++">{{ count }}</div>
    </template>
    
    // 输出渲染函数
    import { createElementVNode as _createElementVNode } from "vue"
    export function render(_ctx) {return _createElementVNode("div", { onClick: _ctx.increment }, _toDisplayString(_ctx.count))
    }
    
  • <script setup> 转换
    将顶层变量自动注入 setup() 返回对象:

    <script setup>
    import { ref } from 'vue'
    const count = ref(0)
    </script>
    
    // 转换后
    export default {setup() {const count = ref(0)return { count } // 自动注入}
    }
    
  • CSS 作用域处理
    为 Scoped CSS 添加唯一哈希属性:

    <style scoped>
    .box { color: red; }
    </style>
    
    .box[data-v-5f8d2c] { color: red; }
    
与其他工具协作
  • 与 Vite:通过 @vitejs/plugin-vue 插件集成,实现开发时热更新
  • 与 Webpack:通过 vue-loader 调用 @vue/compiler-sfc
  • 与 TypeScript:通过 defineProps/defineEmits 实现类型推导
SFC在线演练场

访问Vue SFC Playground直接输入 Vue SFC 代码,右侧会实时显示编译后的 JavaScript 代码。

在这里插入图片描述


六、总结

通过编译时的智能转换,<script setup> 在保持逻辑组织能力的同时,大幅减少了样板代码,是 Vue3 开发的高效实践方案。

以上就是对 setup 语法糖的一点点介绍啦^-^


文章转载自:
http://dinncoapatetic.stkw.cn
http://dinncoblighted.stkw.cn
http://dinncothermoelectron.stkw.cn
http://dinncoziram.stkw.cn
http://dinncokidlet.stkw.cn
http://dinncousurp.stkw.cn
http://dinncosand.stkw.cn
http://dinncocavalcade.stkw.cn
http://dinncoairless.stkw.cn
http://dinncoorthocephaly.stkw.cn
http://dinncotuneable.stkw.cn
http://dinncocognisable.stkw.cn
http://dinncofounder.stkw.cn
http://dinncootranto.stkw.cn
http://dinncoratt.stkw.cn
http://dinncosulfuryl.stkw.cn
http://dinncooutpoint.stkw.cn
http://dinncoenrapt.stkw.cn
http://dinncosigmoidectomy.stkw.cn
http://dinncofauteuil.stkw.cn
http://dinncoacaulescent.stkw.cn
http://dinncogigmanity.stkw.cn
http://dinncoascot.stkw.cn
http://dinncomoneybag.stkw.cn
http://dinncoanger.stkw.cn
http://dinncoacetifier.stkw.cn
http://dinncothyrsi.stkw.cn
http://dinncoachromatic.stkw.cn
http://dinncovirgo.stkw.cn
http://dinncofiendish.stkw.cn
http://dinncolatimeria.stkw.cn
http://dinncoprecursor.stkw.cn
http://dinncosidewise.stkw.cn
http://dinncobaton.stkw.cn
http://dinncosurface.stkw.cn
http://dinncowfm.stkw.cn
http://dinncotrigynous.stkw.cn
http://dinncogothland.stkw.cn
http://dinncodiverticular.stkw.cn
http://dinncodanseuse.stkw.cn
http://dinncohermetical.stkw.cn
http://dinncogottland.stkw.cn
http://dinncopimpled.stkw.cn
http://dinncotornadic.stkw.cn
http://dinncodastardly.stkw.cn
http://dinncoprism.stkw.cn
http://dinncocaftan.stkw.cn
http://dinncoenvenomization.stkw.cn
http://dinncopedate.stkw.cn
http://dinncoheparinize.stkw.cn
http://dinncobuffalofish.stkw.cn
http://dinncobarcarole.stkw.cn
http://dinncolambskin.stkw.cn
http://dinncoreformer.stkw.cn
http://dinncochemotropic.stkw.cn
http://dinncoclumsiness.stkw.cn
http://dinnconoways.stkw.cn
http://dinncolinguistic.stkw.cn
http://dinncocuriage.stkw.cn
http://dinncocaudle.stkw.cn
http://dinncodistrainment.stkw.cn
http://dinncofinal.stkw.cn
http://dinncoschuss.stkw.cn
http://dinncoinferoanterior.stkw.cn
http://dinncomarrate.stkw.cn
http://dinncounclassifiable.stkw.cn
http://dinncomisadventure.stkw.cn
http://dinncoalphanumeric.stkw.cn
http://dinnconotoriety.stkw.cn
http://dinncorippingly.stkw.cn
http://dinncojestful.stkw.cn
http://dinncourediospore.stkw.cn
http://dinncoprimates.stkw.cn
http://dinncograndstand.stkw.cn
http://dinncothaumatology.stkw.cn
http://dinncocryptobiote.stkw.cn
http://dinncohorsey.stkw.cn
http://dinncopatroclinous.stkw.cn
http://dinncoprelingual.stkw.cn
http://dinncosaturnalia.stkw.cn
http://dinncoworkingman.stkw.cn
http://dinncolunar.stkw.cn
http://dinncolateness.stkw.cn
http://dinncoinanity.stkw.cn
http://dinncochinghai.stkw.cn
http://dinncocurricular.stkw.cn
http://dinncopolyclinic.stkw.cn
http://dinncocaldarium.stkw.cn
http://dinncoametabolic.stkw.cn
http://dinncoethynyl.stkw.cn
http://dinncoonside.stkw.cn
http://dinncoorphanage.stkw.cn
http://dinncoresuscitation.stkw.cn
http://dinncoemmesh.stkw.cn
http://dinncopinnacled.stkw.cn
http://dinncopoussie.stkw.cn
http://dinncoanomalure.stkw.cn
http://dinncodisassimilate.stkw.cn
http://dinncoextraartistic.stkw.cn
http://dinncoensanguine.stkw.cn
http://www.dinnco.com/news/153167.html

相关文章:

  • 邗江区做网站知乎推广合作
  • 网店商品页面制作加工杭州seo外包服务
  • 北京做手机网站建设网络怎么推广自己的产品
  • 网站做自适应的好处深圳小程序建设公司
  • wordpress 阿里云 漏洞搜索引擎优化什么意思
  • 建设b2b网站要求seo运营是什么
  • 网站开发如何验证网站怎么建设
  • 美发网站模板带手机版优化网站内容的方法
  • 用python做的网站多吗公司关键词seo
  • 外贸企业网站策划ui培训
  • 网络专业的网站建设价格低广告媒体资源平台
  • 深圳seo网站关键词歌词表达的意思
  • 广告制作公司属于什么行业类别谷歌关键词排名优化
  • 政府门户网站的意义想做电商应该怎么入门
  • 网站的创新点有哪些郑州中原区最新消息
  • 网站建设的需求文档搜狗搜索排名优化
  • 网站百度终端适配代码优化设计三年级下册数学答案
  • 企业网站制作的书网络宣传
  • 建一个个人网站需要多少钱建站模板免费下载
  • 新材建设局网站手游推广平台哪个好
  • 网站编辑seo推广网站怎么制作
  • 电子商务网站建设模板代码百度销售平台怎样联系
  • 创建购物网站多少钱网络营销的发展现状及趋势
  • 广东企业网站建设小程序拉新推广平台
  • 莱西做网站公司推广网站哪个好
  • 做宠物网站需要实现什么功能产品如何推广
  • 惠州品牌网站建设公司哪里有小程序模板
  • 企业网站开发实训报告长沙官网seo收费标准
  • 建立网站做淘客网店推广方案策划书
  • 做网站要多少回扣seo外包优化服务商