刷刷题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)‌
相关推荐
前端工作日常几秒前
我学习到的babel插件移除Flow 类型注解效果
前端·babel·前端工程化
SY_FC1 分钟前
uniapp input 聚焦时键盘弹起滚动到对应的部分
javascript·vue.js·elementui
前端工作日常13 分钟前
我学习到的 Babel 配置
前端·babel·前端工程化
xw51 小时前
uni-app项目跑APP报useStore报错
前端·uni-app
!win !1 小时前
uni-app项目跑APP报useStore报错
前端·uni-app
拾光拾趣录1 小时前
Flexbox 布局:从“垂直居中都搞不定”到写出响应式万能布局
前端·css
渣渣盟2 小时前
JavaScript核心概念全解析
开发语言·javascript·es6
huxihua20062 小时前
各种前端框架界面
前端
拾光拾趣录2 小时前
GET/POST 的区别:从“为什么登录请求不能用 GET”说起
前端·网络协议
Carlos_sam2 小时前
OpenLayers:ol-wind之渲染风场图全解析
前端·javascript