Skip to content

klren0312/vite_vue2.7

Folders and files

NameName
Last commit message
Last commit date

Latest commit

13fc405 · Mar 27, 2025

History

56 Commits
Jan 16, 2024
Mar 28, 2024
Jul 7, 2022
Sep 19, 2022
Jan 23, 2025
Sep 15, 2022
Jul 5, 2022
Mar 28, 2024
Jul 5, 2022
Mar 28, 2024
Mar 20, 2024
Mar 27, 2024
Dec 29, 2023
Dec 29, 2023
Mar 27, 2025
Mar 27, 2025
Aug 31, 2022
Jan 23, 2025
Aug 31, 2022
Jan 23, 2025

Repository files navigation

Vue 2.7 + Vite

vue2.7 + vue-router3 + pinia 示例代码: https://github.com/klren0312/vite_vue2.7 示例页面: https://klren0312.github.io/vite_vue2.7/

由JetBrains提供开发工具支持

用到的vite插件

  • @vitejs/plugin-vue2 vite的vue2.7插件
  • @vitejs/plugin-legacy 打包支持IE
  • unplugin-vue-components 按需引入插件

相关配置

1. vscode的vetur插件适配

参考资料: vuejs/vetur#2296 (comment)

需要在根目录创建vetur.config.js

// vetur.config.js
module.exports = {
  settings: {
    'vetur.completion.autoImport': false,
    'vetur.experimental.templateInterpolationService': false,
    'vetur.validation.interpolation': false,
    'vetur.validation.template': false,
    'vetur.validation.templateProps': false,
    'vetur.validation.style': false,
    'vetur.validation.script': false,
    'vetur.format.enable': false,
    'vetur.ignoreProjectWarning': true,
    'vetur.languageFeatures.codeActions': false,
    'vetur.languageFeatures.semanticTokens': false,
    'vetur.languageFeatures.updateImportOnFileMove': false,
    'vetur.trace.server': 'off',
    'vetur.underline.refValue': false,
  },
}

或者改用volar插件

2. vite适配vue2.7

参考资料: https://github.com/vuejs/vue/blob/main/CHANGELOG.md#vue-cli--webpack

使用官方的@vitejs/plugin-vue2插件

vite创建vue项目后, 把插件替换下就行了

3. vue-router安装

vue2只支持vue-router3版本

若需要在页面中使用$route和$router, 可以在路由文件中新增两个方法

export function useRouter() {
  return router
}

export function useRoute() {
  return router.currentRoute
}

4. pinia安装

按官方文档引入即可: https://pinia.vuejs.org/getting-started.html#installation

import { createPinia, PiniaVuePlugin } from 'pinia'

Vue.use(PiniaVuePlugin)
const pinia = createPinia()

new Vue({
  el: '#app',
  // other options...
  // ...
  // note the same `pinia` instance can be used across multiple Vue apps on
  // the same page
  pinia,
})

5. element-ui按需引入

使用unplugin-vue-components插件

  • 💚 Vue 2 和 Vue 3 开箱即用
  • ✨ 支持组件和指令.
  • ⚡️ 支持 Vite, Webpack, Vue CLI, Rollup, esbuild 等打包工具, powered by unplugin.
  • 🏝 Tree-shakable,只注册引用的组件.
  • 🪐 文件夹名称作为命名空间.
  • 🦾 ts支持.
  • 🌈 内置解析器 支持主流的UI库.
  • 😃 对 unplugin-icons支持友好.

使用方法(element-ui为例):

import Components from 'unplugin-vue-components/vite'
import { ElementUiResolver } from 'unplugin-vue-components/resolvers'
export default defineConfig({
  plugins: [
    Components({
      resolvers: [ElementUiResolver()],
    }),
  ],
})

6. 打包后支持ie11

使用@vitejs/plugin-legacy插件

import legacy from '@vitejs/plugin-legacy'
export default defineConfig({
  plugins: [
    legacy({
      targets: ['defaults', 'not ie < 9'],
    }),
  ],
})

7. 分离打包

参考资料: https://rollupjs.org/configuration-options/#output-manualchunks

import { splitVendorChunkPlugin } from 'vite'
export default defineConfig({
  plugins: [
    splitVendorChunkPlugin(),
  ],
  build: {
    rollupOptions: {
      output: {
        manualChunks: {
          'element-ui': ['element-ui'],
          echarts: ['echarts', 'vue-echarts'],
        },
      },
    },
  },
})