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 保持了更好的向后兼容性。

相关推荐
用户693717500138441 分钟前
Google 正在“收紧侧加载”:陌生 APK 安装或需等待 24 小时
android·前端
蓝帆傲亦1 小时前
Web 前端搜索文字高亮实现方法汇总
前端
用户69371750013841 小时前
Room 3.0:这次不是升级,是重来
android·前端·google
漫随流水2 小时前
旅游推荐系统(view.py)
前端·数据库·python·旅游
踩着两条虫3 小时前
VTJ.PRO 核心架构全公开!从设计稿到代码,揭秘AI智能体如何“听懂人话”
前端·vue.js·ai编程
jzlhll1234 小时前
kotlin Flow first() last()总结
开发语言·前端·kotlin
蓝冰凌5 小时前
Vue 3 中 defineExpose 的行为【defineExpose暴露ref变量】详解:自动解包、响应性与实际使用
前端·javascript·vue.js
奔跑的呱呱牛5 小时前
generate-route-vue基于文件系统的 Vue Router 动态路由生成工具
前端·javascript·vue.js
sp42a5 小时前
在 NativeScript-Vue 中实现流畅的共享元素转场动画
vue.js·nativescript·app 开发