vscode配置composition-api (vue2)

本文记录了在Vue2项目中使用VSCode配合Composition API时的配置过程,包括下载并引入composition-api,使用单文件组件的script setup语法,安装unplugin-vue2-script-setup,配置webpack,安装Volar插件,并处理与Vetur的冲突,以及eslint-plugin-vue的版本要求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在vue项目中(使用vue2)使用compositon-api进行代码编写,发现在vscode配置也有一些小坑,记录一下,方便以后查询,也方便使用相同工具的小伙伴配置.

组合式api配置

  1. 下载composition-api 下载地址
  2. 在 main.js 文件中引入
import Vue from 'vue'
import VueCompositionAPI from '@vue/composition-api'

Vue.use(VueCompositionAPI)

其实到这里为止,在vue里面可正常使用composition-api了,一般写法按照官网就可编写了,附上地址 组合式API

但是我特别不爱用这个写法,为啥呢,看下面官网示例代码:

setup(props) {
    const { user } = toRefs(props)

    const { repositories, getUserRepositories } = useUserRepositories(user)

    const {
      searchQuery,
      repositoriesMatchingSearchQuery
    } = useRepositoryNameSearch(repositories)

    const {
      filters,
      updateFilters,
      filteredRepositories
    } = useRepositoryFilters(repositoriesMatchingSearchQuery)

    return {
      // 因为我们并不关心未经过滤的仓库
      // 我们可以在 `repositories` 名称下暴露过滤后的结果
      repositories: filteredRepositories,
      getUserRepositories,
      searchQuery,
      filters,
      updateFilters
    }
  }

使用setup写法时候,需要使用return,我们使用的越多,return的内容就越长,如果赶上一个大文件,return的长度就够我烦躁的了(毕竟亲眼见过了)

所以我喜欢用下面的写法-单文件组件 script setup

script setup是在单文件组件 (SFC) 中使用组合式 API 的编译时语法糖。相比于普通的 script 语法,它具有更多优势

要使用这个语法,需要将 setup 添加到 script 代码块上

<script setup>
// 变量
const msg = 'Hello!'

// 函数
function log() {
  console.log(msg)
}
</script>

这样就不用写retrun

单文件组件的配置 文档地址

  1. 下载composition-api 和 在 main.js 文件中引入,这个和上面一个操作
  2. 下载 unplugin-vue2-script-setup ,下载地址unplugin-vue2-script-setup
    注意:npm i -D unplugin-vue2-script-setup 这个安装,看自己项目打包情况,如果在生产环境不会安装package.json里面devDependencies的依赖,那就直接npm i unplugin-vue2-script-setup将依赖安装在dependencies中.
  3. webpack.config.js中配置编译内容:
module.exports = {
  /* ... */
  plugins: [
    require('unplugin-vue2-script-setup/webpack')(),
  ]
}

注意: 我的项目用的webpack进行打包,这个地方配置方式取决于自己项目打包情况,不同打包配置方式在unplugin-vue2-script-setup这个文档里面写的清清楚楚

  1. 配置完项目,开始配置vscode.使用vscode需要安装 @vue/runtime-dom,这个是编辑器使用的,无需配置在dependencies
npm i -D @vue/runtime-dom
  1. 在vscode扩展中心中 安装 Volar 的插件
    注意: Volar 和 Vetur 插件冲突,二者需要相互禁用

  2. 在全局的tsconfig.json文件中配置内容

// tsconfig.json
{
  "compilerOptions": {
    "types": [
      "unplugin-vue2-script-setup/types"
    ]
  },
   "vueCompilerOptions": {
      "experimentalCompatMode": 2 // vue2 的框架需要加这个配置
    }
}

如果自己项目里面没有tsconfig.json文件,可以尝试在项目最外层自行添加一个.
7. 如果还使用了ESLint的话,还需要在eslintrc.js中进行相对应配置:

module.exports = {
// .....
  globals: {
    defineProps: 'readonly',
    defineEmits: 'readonly'
  },
}

**注意:**目前我只使用了definePropsdefineEmits的方法,只定义了两种,如果有使用多的方法,也需要在里面定义,详见文档
8. eslint-plugin-vue 插件用8以上版本,我用的8.2.0
"eslint-plugin-vue": "^8.2.0"

以上配置完,就可以开开心心的写代码了~~,希望能帮助到小伙伴们.

### 如何在 VSCode 中为 Vue3 配置语法高亮 为了使 VSCode 支持 Vue3 文件的语法高亮,需要安装一些扩展并进行适当配置。以下是具体的实现方法: #### 安装必要的扩展 首先,在 VSCode 的扩展市场中搜索并安装以下插件: - **Vetur**: 这是一个非常流行的 Vue 工具包,提供了语法高亮、智能感知等功能[^1]。 - **Vue Language Features (Volar)**: Volar 是专门为 Vue3 设计的语言支持工具,推荐优先使用它而不是 Vetur,因为它是官方团队维护的插件[^2]。 如果同时安装了 Vetur 和 Volar,则需禁用 Vetur 的功能以避免冲突。可以通过设置 `vetur.grammar.customHandlers` 或者直接卸载 Vetur 来解决这个问题。 #### 设置 JavaScript/TypeScript 语言特性 由于 Vue3 使用 Composition API 并依赖于 TypeScript 功能,因此还需要启用以下选项: ```json { "typescript.tsdk": "node_modules/typescript/lib", "[vue]": { "editor.defaultFormatter": "Vue.vls" } } ``` 上述 JSON 片段应被添加到用户的全局或工作区 settings.json 文件中。这一步确保了 TypeScript 提供器能够正确解析 `.vue` 单文件组件中的 `<script setup>` 和其他新特性。 #### 更新项目依赖项 对于基于脚手架创建的新 Vue3 项目,默认已经集成了所需的开发环境。但如果手动初始化了一个简单的项目,则可能需要额外引入如下 npm 包作为 devDependencies: ```bash npm install --save-dev @vitejs/plugin-vue vue-tsc typescript eslint-plugin-vue ``` 完成这些操作之后重启 VSCode 编辑器即可看到更完善的语法着色效果以及增强的功能提示服务。 ```javascript // 示例:一个典型的 Vue3 SFC 结构展示 <template> <div>{{ message }}</div> </template> <script lang="ts" setup> import { ref } from 'vue'; const message = ref('Hello, world!'); </script> <style scoped> div { color: blue; } </style> ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值