vue.js

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript类库 > vue.js > vue3 defineProps和defineEmits

vue3在构建时使用魔法糖语法时defineProps和defineEmits的注意事项小结

作者:小透明落在星田

在 Vue 3.2+ 版本中,可以使用 <script setup> 替代传统的 script标签来编写组件,它提供了更简洁的语法来编写 Composition API 代码,这篇文章主要介绍了vue3在构建时使用魔法糖语法时defineProps和defineEmits的注意事项小结,需要的朋友可以参考下

1.vue2和vue3区别

1.1 vue3中vue是一个对象,可以使用按需导入

import {createApp} from 'vue ’

1.2 导入区别

vue2中使用的vue-router3.0导入的是构造函数 new VueRouter()
vue3中使用的vue-router4.0导入的是对象 createRouter()

1.3 语法

vue2语法在vue3中都可以使用,除了过滤器并不能使用

2. vue3脚手架

脚手架中的路由有三种模式:历史模式history、哈希模式hash、抽象模式abstract

2.1 脚手架配置

vue create projectname------Manually select features--------Babel(js编译器)、Router、Vuex、CSS Pre-processors(css预处理器)

接下来介绍vue3在构建时,使用魔法糖语法时defineProps和defineEmits的注意事项、

在 Vue 3.2+ 版本中,可以使用 <script setup> 替代传统的 script标签来编写组件,它提供了更简洁的语法来编写 Composition API 代码。

在 <script setup> 中,使用 defineProps 和 defineEmits时需要注意:

<script steup>
import { defineProps } from 'vue';
...
</script>

开发环境编译时会提示

[@vue/compiler-sfc] `defineProps` is a compiler macro and no longer needs to be imported.

原因是在 <script setup>中,defineProps 和 defineEmits 现在是编译器宏(compiler macros),这意味着你不再需要显式地从 'vue' 包中导入它们。这些宏在 <script setup> 的上下文中是自动可用的。

 ERROR  Failed to compile with 1 error
[eslint] 
  40:1  error  'defineProps' is not defined  no-undef

要解决以上问题,既不重复导入又不在编译时提示warning,可以在package.json里添加一行配置:
package.json

  ...
  "eslintConfig": {
    "root": true,
    "env": {
      "node": true,
      "vue/setup-compiler-macros": true #添加这行配置
    },
...

到此这篇关于vue3在构建时使用魔法糖语法时defineProps和defineEmits的注意事项小结的文章就介绍到这了,更多相关vue3 defineProps和defineEmits内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文