vue3 中有什么理由不使用 <script setup> 吗?

Cam*_*ick 8 vue.js vuejs3 vue-composition-api

https://vuejs.org/guide/extras/composition-api-faq.html 我正在阅读 vue 3 的组合 api 和遗留选项 api 之间的差异。我一直很困惑何时应该使用该设置脚本设置和defineProps 上的函数和props 选项。从我在常见问题解答中读到的内容来看,“是的。您可以通过选项 API 组件中的 setup() 选项使用组合 API。

但是,我们仅建议您在现有的 Options API 代码库需要与使用 Composition API 编写的新功能/外部库集成时才这样做。”

那么迂腐并要求正确性,是使用 options api 来使用 setup 函数吗?如果你要开始一个新的 vue 3 项目,你会<script setup>在每个组件中使用吗?有理由不使用吗<script setup>

到目前为止,我一直在使用带有 props 选项的设置函数,我认为代码运行良好且可读,但我认为这不是正确的处理方式。我应该做所有事情<script setup>并删除设置功能吗?

Est*_*ask 10

那么迂腐并要求正确性,是使用 options api 来使用 setup 函数吗?

选项 API 与块不同script。Options API 代表被composition API 取代的组件选项,即data, methods, computed, watch, mixins

如果你要开始一个新的 vue 3 项目,你会在每个组件中使用吗?有理由不使用吗?

这是主观的,但有理由避免这种情况。

script setup是 DSL,而不是符合规范的 JavaScript。它不透明,也没有完整的文档记录,与此语法相关的相当多的问题来自于开发人员不完全了解代码在做什么,这只能通过调试编译后的 JavaScript 代码来确认。这增加了与 DSL 类似的问题template,只不过后者有详细的文档记录,而且除了它允许编写更少的代码之外,它的存在还有其他原因。

该语法涵盖了大多数常见情况,但任何特殊情况都需要添加额外的script或重构组件以script代替script setup. 其中一些情况在做出组件语法决定时无法预测。这会导致不一致和额外的维护。

仍然有一些工具不完全支持script setup语法。

Vue反应性转换是语法糖的另一个示例,它使用$美元等宏来实现简洁的组件代码,但牺牲了其清晰度和对 ECMAScript 标准的遵从性。

  • 您能否详细说明一下“脚本设置是 DSL,而不是符合规范的 JavaScript”。我不知道DSL是什么。 (2认同)
  • https://en.wikipedia.org/wiki/Domain-specific_language 。它是一种类似于 JS 的虚构语言,但以自己的方式工作。在 JS 中,您会期望“import MyComp ...”是一个无操作,并且会进行树摇动,但在脚本设置中,它会被神奇地添加到“组件”中,等等。是的,我个人建议使用脚本函数,这是一个更安全的选择,尽管脚本设置已被广泛宣传。脚本设置可以使工作完成速度提高几个百分点,但没有人知道您会在处理其限制和怪癖时浪费多少时间,而常见的 JS 知识对此无济于事。 (2认同)