刷刷题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>

‌传统写法 ‌:通过 return 或 expose 选项暴露‌

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

四、代码简洁性对比

‌5. 代码结构简化‌

  • ‌语法糖 ‌:省去 export default、setup 函数和 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)‌
相关推荐
Moment39 分钟前
写给迷茫的应届生,怎样在 AI 时代争取更多机会
前端·后端·面试
fengci.1 小时前
CTF2MISC中等部分
开发语言·前端·学习
涛涛ing1 小时前
那个PR太干净了,干净到我差点直接点了合并
前端
去伪存真1 小时前
稠密检索负责脑补,稀疏检索负责兜底:拆解 RAG 倒排索引的“查字典”艺术
前端·agent
学以智用1 小时前
jsencrypt.js 完整详解
javascript
喵个咪2 小时前
GoWind 拆解:全链 ID 类型体系——int64 定版与前端字符串化契约
前端·后端·go
喵个咪2 小时前
GoWind CMS 拆解:Flutter 设计系统内核——双态 token、四档断点与自适应壳层
前端·flutter·交互设计
喵个咪2 小时前
GoWind CMS 拆解:发布审批——多级推进、逐级角色与全程留痕
前端·后端·go
喵个咪3 小时前
GoWind Flow 拆解:一个 Go 工作流引擎与它的双模式设计器
前端·后端·go
喵个咪3 小时前
GoWind Admin 拆解:打印模板设计器——从画布到服务端 PDF 的完整打印链路
前端·后端·go