Skip to content

Latest commit

 

History

History
46 lines (38 loc) · 2.55 KB

File metadata and controls

46 lines (38 loc) · 2.55 KB

Q1. Vue3 setup语法糖写法给组件添加name属性

  1. 新增一个script标签,在这个script标签定义一个name属性(在 3.2.34 或以上的版本中,使用<script setup>的单文件组件会自动根据文件名生成对应的name选项,无需再手动声明。Link
  2. 使用 unplugin-vue-define-option 插件
  3. 使用 vite-plugin-vue-setup-extend 插件

Q2. 官方文档definePropsdefineEmitsAPI可以直接使用,但eslint可能报错

// .eslintrc.cjs文件中增加
module.exports = {
  // ...
  env: {
    node: true,
    'vue/setup-compiler-macros': true
  },
  // ...
}

关于配置文件是.cjs而不是.js的补充说明
>* 因为项目被定义为ESMeslint --init会自动识别为type,并生成兼容的配置文件名称 >* 如果改回.js结尾,再运行eslint会报错,出现这个问题是eslint内部使用了require()语法读取配置 >* ESM(EcmaScript Module)规范需要在package.json文件里设置"type": "module"


Q3. 选项式api与组合式api

  • 选项式api就是用包含多个选项的对象来描述组件的逻辑,比收说,data,methods,mounted,updated等等。在这些选项内定义的属性都会暴露在函数内部的this上,其中的this会指向组件实例
  • 组合式api与选项式api不同,他通常会跟<script setup>一起搭配使用,并且组合式api的可复用性比选项式api要好很多,所以,组合式api适合使用在那些大型项目中,代码的灵活性也比较高,而选项式api对于初学者来说更加友好

Q4. refreactive 使用选择

reactive 可以转换对象成为响应式数据对象,但是不支持简单数据类型
ref 可以转换简单数据类型为响应式数据对象,也可以支持复杂数据类型,但是操作的时候需要使用到 .value
如果确定数据类型是对象,且字段和名称也确定,可以使用 reactive 转换成响应式数据,其他都使用 ref