一、语法简洁性:
setup():你需要在组件中显式地定义一个setup()函数,并在其中使用 Composition API。<script setup>:你可以直接在<script setup>标签内使用 Composition API,无需定义setup()函数,这使得代码更加简洁。
二、上下文自动暴露:
setup():在setup()函数中,你需要显式地通过参数获取props和context(包含attrs、slots和emit)。<script setup>:在<script setup>中,props会被自动暴露为组件的属性,context中的attrs和slots会被自动暴露为组件的响应式属性,而emit可以通过defineEmits宏来定义,但通常直接使用context.emit是可选项,因为可以直接使用defineEmit宏来定义事件。
三、模板引用
setup():在setup()函数中,你需要通过ref创建一个模板引用,并在setup()函数的返回对象中提供这个引用。<script setup>:在<script setup>中,你可以直接使用ref创建模板引用,并通过模板中的ref指令绑定到 DOM 元素上,无需在返回对象中提供
四、响应式状态与逻辑
- 在这一点上,两者没有区别。两者都使用
ref、reactive、computed、watch等 Composition API 函数来创建和管理响应式状态和逻辑。