怎样使用 Vue 3 的<script setup>语法糖功能

在 Vue 3 中,它引入了一个 <script setup>功能。它是编译时语法糖,用于在单个文件组件中使用组合 API。此语法允许开发人员定义组件,而无需从 JavaScript 代码块中导出任何内容。它向模板公开其所有顶级绑定。长话短说,这种语法使单文件组件更简单,让你觉得你正在使用原生JavaScript代码。

RFC的确切措辞来说,“该提案的主要目标是通过直接向模板公开 <script setup>上下文来减少单文件组件(SFC)中组合API使用的详细程度。

 <script setup>和 <script>之间的主要区别

  • 性能
    <script setup>具有更好的运行时性能,因为它将模板编译为具有相同作用域且没有中间代理的呈现方法。<脚本>使用中间代理编译模板。
  • 代码语法
    <脚本>块中,我们需要导出带有样板代码的模块。<script setup>允许我们定义组件,而无需导出任何内容。在<script setup>块中,我们可以使用更少的样板文件获得更简洁的代码。
  • 执行流程
    <脚本>块在我们首次导入组件时执行。<script setup>块将在每次创建组件实例时执行。
  • 组织代码
    我们可以根据<script setup>块中的业务逻辑来组织代码。使用<script>块是不可能的,因为我们必须遵循Vue的选项API或组合API的编码结构。

使用组件

我们只需要导入component即可在模板中使用它们,因为编译器会自动将它们添加到我们的应用程序中。我们可以使用PascalCase或kebab-case作为模板中的组件名称。但是,强烈建议使用 PascalCase 的组件名称以保持一致性。它还有助于与本机自定义元素区分开来。

(图片 — 1)将组件与<脚本设置一起使用>

向模板公开的顶级绑定

<script setup>向模板公开其所有顶级绑定(包括变量、方法和导入)。我们可以在模板表达式中直接使用导入的帮助器方法,而不必通过 methods 选项公开它。

(图片 — 2)使用脚本设置时向模板公开的顶级绑定<>

使用递归组件

单个文件组件可以通过其文件名隐式引用自身。例如,文件名为 ListRenderer.vue 的组件可以在其模板中将自己称为< ListRenderer />

(图片 — 3)具有<script setup>的递归组件

(图片 — 4)具有<script setup>的递归组件

使用动态组件

所有导入的组件都作为变量引用,因此我们可以将它们与 :is 绑定一起使用,以便在模板中进行动态组件绑定。

(图片 — 5)带<script setup>的动态组件演示

使用生命周期挂钩

我们可以使用 onX 方法注册组件的生命周期钩子,我们可以从 vue 库中导入这些方法。

(图片 — 6)在 <script setup>中使用生命周期挂钩

Reactivity API(反应)

需要使用Reactivity API 创建反应式状态。例如,在模板中引用引用时,会自动解开引用。

(图片 — 7)带<script setup>的Reactivity demo 

使用 Emits(发出)

要定义发出,我们需要使用定义Emits API方法,该方法完全支持类型推断。defineEmits 接受与发出选项相同的值。

(图片 — 8)将 emits 与<script setup>一起使用

(图片 — 9)将 emits 与<script setup>一起使用

使用Props(道具)

要定义 props,我们需要使用 defineProps API 方法,该方法完全支持类型推断。defineProps 接受与 props 选项相同的值。

(图片 — 10)将pops与<script setup>一起使用

根据官方文档,我们不需要在<script setup>中导入defineProps和definedEmits。但是,如果您在未导入的情况下使用它们,则将面临no-undef error的错误。

以下解决方案可以帮助您克服no-undef的问题:

(Image — 11) 使用 Vite 创建 Vue 项目

  • 在 ESLint 配置文件中添加以下规则。(探索更多)

(图片 — 12)用于修复无取消定义错误的 ESLint 配置

用watch应对变化

我们可以通过 Vue 提供的watch选项对数据更改做出反应。当我们想要执行异步或成本高昂的操作以响应更改时,这是最有用的。

(图片 — 13)将watch 与<script setup>一起使用

使用Computed计算属性

我们可以声明一个计算属性,该属性根据属性或数据更改而随时自动更新。

(图片 — 14)将computed计算属性与<script setup>

使用普通的<script> 和<script setup>

<script setup>可以与普通的<script >一起使用,因为<script setup>为其顶级绑定创建自己的作用域。Vue 将为你混合在一起,所以你的组合代码和选项代码保持独立。

当我们需要必须在模块范围内执行的代码时,在某些情况下需要一个普通的<script>。一些指针如下:

  • 声明无法在<脚本设置>中表示的选项,例如 inheritAttrs
  • 通过插件启用的自定义选项
  • 声明命名导出
  • 运行副作用或创建只应执行一次的对象
  • 像Nuxt这样的框架为标准选项API语法提供了额外的方法,这些方法在<script setup>中未公开

(图片 — 15)将 <script> 和<script setup>结合使用

(图片 — 16)将 <script> 和<script setup>结合使用

猜你喜欢

转载自blog.csdn.net/qq_22182989/article/details/125647294