vue3 为什么script setup限制scr属性
时间: 2023-05-26 21:04:40 浏览: 48
Vue 3 中的 `<script setup>` 是为了让组合式 API 更加方便和易用。它允许你在单独的 `setup()` 函数中声明组件的状态和行为,并自动导入并使用 Vue 的 reactivity 系统。
`<script setup>` 的限制是出于性能和可维护性的考虑的。在组件中,`<script>` 标签的 `src` 属性可以用于动态加载脚本,但这可能会使组件更加复杂、难以跟踪和调试。在 `<script setup>` 中,将脚本内联会更加直观、易于维护和优化。此外,在编译时,Vue 可以更好地推断从 `setup()` 导出的符号(symbol)和其依赖关系,这是一个重要的性能优化。而 `src` 属性可能会使这个过程变得更加复杂和不确定。
因此,在 `<script setup>` 中禁止使用 `src` 属性也是为了简化这个过程,使 `setup()` 的重点在于定义状态和行为,而不是在于导入和处理外部脚本。
相关问题
vue3script setup
引用中提到的"vue3 script setup"是Vue 3中的一个新特性。通过使用`<script setup>`标签,我们可以在单文件组件中编写更简洁和可读性更高的代码。相比于普通的`<script>`标签,`<script setup>`标签有以下优势:
1. 无需导入和导出:在`<script setup>`标签中声明的变量和函数可以直接在组件中使用,无需手动导入和导出,使得代码更加简洁。
2. 自动响应式:在`<script setup>`标签中声明的变量会自动成为响应式数据,无需手动调用`ref`或`reactive`函数。
3. 使用组件:可以直接在`<script setup>`标签中使用组件,无需手动导入和注册。
4. 使用自定义指令:可以直接在`<script setup>`标签中使用自定义指令,无需手动导入和注册。
5. 使用`defineProps`和`defineEmits`:可以通过`defineProps`定义组件的props,以及通过`defineEmits`定义组件的事件,并且无需手动接收和触发。
6. 使用`defineExpose`:可以通过`defineExpose`将组件内部的数据和方法暴露给父组件,方便父组件访问。
7. 使用`useSlots`和`useAttrs`:可以通过`useSlots`获取插槽内容,以及通过`useAttrs`获取组件的属性。
在`<script setup>`标签中,也可以直接使用`await`关键字来获取异步数据,而无需配合`async`关键字。
vue3 script setup
vue3 script setup 是 vue3 中引入的一个新特性。它可以使我们以新的简洁方式编写组件,相比之前的写法更加直观、易于维护。
vue3 script setup 的核心是使用一个特殊的 <script setup> 标签来编写组件的逻辑。在这个标签中,我们可以使用 let 和 const 等关键字来声明数据,使用函数来定义组件的行为,并且在模板中使用这些数据和函数。
相比之前的写法,vue3 script setup 的优势在于:
1. 简洁明了,代码量大大减少,可读性更高。
2. 统一了数据的声明和组件的导出,在组件的逻辑和结构上更加紧密地组合在一起。
3. 减少了因为 this 指向不清导致的问题,让代码更加简洁优雅。
总而言之,vue3 script setup 提供了更加先进的组件编写方式,可以在开发中更加方便地管理组件逻辑和数据,并且更加直观易懂。它是 vue3 中值得推荐的一个新特性。