vue中 export default 和<script setup> 区别对比

在 Vue 3 中,export default 和

  1. 基本语法差异

export default(Options API)

vue 复制代码
<script>
export default {
  data() {
    return {
      count: 0
    }
  },
  methods: {
    increment() {
      this.count++
    }
  },
  mounted() {
    console.log('组件已挂载')
  }
}
</script>
复制代码
2. 核心区别对比

特性 export default(Options API) <script setup>(Composition API)
语法 对象形式,需要包裹在对象中 直接编写代码,无需包裹
响应式 data() 返回对象 ref() 或 reactive()
方法定义 methods 对象中定义 直接定义函数
生命周期 生命周期钩子作为选项 导入并使用生命周期函数
组件注册 components 选项中注册 导入后直接使用
props 定义 props 选项 defineProps()
emit 定义 emits 选项 defineEmits()
暴露属性 默认暴露所有选项 需用 defineExpose() 显式暴露
代码组织 按选项类型分组 按逻辑功能组织

3. 详细示例对比

组件注册

```vue
<!-- export default -->
<script>
import ChildComponent from './ChildComponent.vue'

export default {
  components: {
    ChildComponent
  }
}
</script>

<!-- script setup -->
<script setup>
import ChildComponent from './ChildComponent.vue'
// 直接使用,无需注册
</script>

Props 处理

vue 复制代码
<!-- export default -->
<script>
export default {
  props: {
    title: {
      type: String,
      required: true
    }
  },
  setup(props) {
    // 在 setup 中使用
    console.log(props.title)
  }
}
</script>

<!-- script setup -->
<script setup>
const props = defineProps({
  title: {
    type: String,
    required: true
  }
})
// 直接使用 props.title
console.log(props.title)
</script>

计算属性

vue 复制代码
<!-- export default -->
<script>
export default {
  data() {
    return { count: 0 }
  },
  computed: {
    doubleCount() {
      return this.count * 2
    }
  }
}
</script>

<!-- script setup -->
<script setup>
import { ref, computed } from 'vue'

const count = ref(0)
const doubleCount = computed(() => count.value * 2)
</script>
  1. 优缺点分析

    总的来说,<script setup> 是 Vue 3 推荐的方式,提供了更现代化的开发体验,而 export default 保持了更好的向后兼容性。

相关推荐
代码搬运媛7 小时前
Jest 测试框架详解与实现指南
前端
counterxing7 小时前
我把 Codex 里的 Skills 做成了一个 MCP,还支持分享
前端·agent·ai编程
wangqiaowq8 小时前
windows下nginx的安装
linux·服务器·前端
之歆8 小时前
DAY_12JavaScript DOM 完全指南(二):实战与性能篇
开发语言·前端·javascript·ecmascript
发现一只大呆瓜8 小时前
Vite凭什么这么快?3分钟带你彻底搞懂 Vite 热更新的幕后黑手
前端·面试·vite
Maimai108088 小时前
React如何用 @microsoft/fetch-event-source 落地 SSE:比原生 EventSource 更灵活的实时推送方案
前端·javascript·react.js·microsoft·前端框架·reactjs·webassembly
kyriewen10 小时前
产品经理把PRD写成“天书”,我用AI半小时重写了一遍,他当场愣住
前端·ai编程·cursor
humcomm10 小时前
元框架的工作原理详解
前端·前端框架
canonical_entropy11 小时前
Attractor Before Harness: AI 大规模开发的方法论
前端·aigc·ai编程
zhangxingchao11 小时前
多 Agent 架构到底怎么选?从 Claude Agent Teams、Cognition/Devin 到工程落地原则
前端·人工智能·后端