刷刷题43 (Vue3 语法糖(<script setup>)与传统写法对比及示例)

一、基础结构差异

1. 组件注册

  • 语法糖‌:无需手动注册组件,直接引入即可使用‌
xml 复制代码
<script setup>
import ChildComponent from './Child.vue'
</script>

传统写法 ‌:需在 components 选项中显式注册‌

xml 复制代码
<script>
import ChildComponent from './Child.vue'
export default {
  components: { ChildComponent }
}
</script>
markdown 复制代码
#### 二、Props/Emits 处理

‌**2. 接收 Props**‌

-   ‌**语法糖**‌:通过 `defineProps` 宏直接声明‌

传统写法 ‌:通过 setup 函数参数接收‌

xml 复制代码
<script>
export default {
  props: ['msg'],
  setup(props) {
    // 使用 props.msg
  }
}
</script>

3. 触发事件

  • 语法糖 ‌:通过 defineEmits 定义事件‌
xml 复制代码
<script setup>
const emit = defineEmits(['update:value'])
emit('update:value', newValue)
</script>

传统写法 ‌:通过 setup 第二个参数 context 触发‌

xml 复制代码
<script>
export default {
  setup(props, { emit }) {
    emit('update:value', newValue)
  }
}
</script>

三、暴露方法/属性

4. 子组件暴露内容

  • 语法糖 ‌:使用 defineExpose 显式暴露‌
xml 复制代码
<script setup>
const childMethod = () => { /* ... */ }
defineExpose({ childMethod })
</script>

传统写法 ‌:通过 returnexpose 选项暴露‌

xml 复制代码
<script>
export default {
  setup() {
    const childMethod = () => { /* ... */ }
    return { childMethod } // 或使用 expose 选项
  }
}
</script>

四、代码简洁性对比

5. 代码结构简化

  • 语法糖 ‌:省去 export defaultsetup 函数和 return 语句‌
xml 复制代码
<script setup>
const count = ref(0)
</script>

传统写法‌:需完整结构‌2

xml 复制代码
<script>
export default {
  setup() {
    const count = ref(0)
    return { count }
  }
}
</script>

五、性能与开发体验

  • 编译优化‌:语法糖在编译阶段直接生成更高效的代码,减少运行时开销‌
  • 类型推导‌:语法糖支持更好的 TypeScript 类型推断‌
  • 生命周期 ‌:两者均支持组合式 API 生命周期钩子(如 onMounted)‌
相关推荐
孟祥_成都20 小时前
nextjs 16 基础完全指南!(一) - 初步安装
前端·next.js
程序员爱钓鱼20 小时前
使用简单 JSON + 自定义 t 函数实现轻量多语言国际化(无需 next-intl)
前端·javascript·trae
一 乐20 小时前
助农平台|基于SprinBoot+vue的助农服务系统(源码+数据库+文档)
前端·javascript·数据库·vue.js·ecmascript·springboot
vivo互联网技术20 小时前
浅谈 AI 搜索前端打字机效果的实现方案演进
前端·vue·dom
●VON20 小时前
Electron 小游戏实战:太空打砖块(Space Breakout)
前端·javascript·electron
新晨43720 小时前
Vue 3 定时器清理的最佳实践
javascript·vue.js
重铸码农荣光20 小时前
深入理解 JavaScript 原型机制:从“如何拿到小米 SU7”说起
前端·javascript
Zyx200720 小时前
深入 JavaScript 事件机制:从冒泡到事件委托的高效实践
javascript
乐观的用户20 小时前
搞懂虚拟列表实现原理与步骤
前端·vue.js
Heo20 小时前
Webpack高级之常用配置项
前端·javascript·面试