vue-element-admin升级到vite

为什么要升级

尝试新的构建工具,熟悉vite配置,体验vite的极致的开发环境速度和生产构建速度。

什么是Vite

vite开发环境输出的ESM, 无须把源码中的ESM编译成ES5语法,所以速度极快。

xml 复制代码
<!-- ESM -->
<script type="module" src="./src/main.js"></script>
<!-- es5 -->
<script data-rms="1" crossorigin="anonymous" src="/rp/l5qlKyb5rPv_F2YU5blrntiAB0c.br.js" type="text/javascript"></script>

vite内部封装了esbuild, 理论上webpack5也可以引入esbuild-loader,但是实际试过效果并不好。

开发环境升级步骤

  1. 参考官方vite项目,基本配置。

    1. 安装vite4,vite5不兼容vue2

    2. 添加vite.config.js

    3. 删除public/index.html,项目最外层添加index.html, index.html引入入口js

      html 复制代码
          <!DOCTYPE html>
          <html>
            <head>
              <meta charset="utf-8">
              <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
              <meta name="renderer" content="webkit">
              <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
              <title>vue-element-admin-vite</title>
            </head>
            <body>
              <div id="app"></div>
              <!-- built files will be auto injected -->
              <script type="module" src="./src/main.js"></script>
            </body>
          </html>
          ```
    4. 解析scss文件

      1. 安装sass
      2. vite.config.js添加additionalData及resolve配置
    javascript 复制代码
        import { defineConfig } from 'vite'
        import { createVuePlugin } from 'vite-plugin-vue2'
        import { createHtmlPlugin } from 'vite-plugin-html'
        import styleImport from 'vite-plugin-style-import'
        const path = require('path')
    
        export default () => {
          return defineConfig({
            resolve: {
              extensions: ['.vue', '.js'],
              alias: {
                '@': path.resolve(__dirname, './src')
              }
            },
            css: {
              preprocessorOptions: {
                scss: {
                  additionalData: '@import "@/styles/variables.scss";'
                }
              }
            },
            plugins: [
              createHtmlPlugin({
                minify: true
              })
            ]
          })
        }
        ```
  2. jsx语法支持

javascript 复制代码
// vue-config.js添加jsx
plugins: [
  createVuePlugin({
    jsx: true
  })
]

// 涉及jsx语法的script
<script lang="jsx">
  1. require('path')是 wepback语法,vite不支持,换用'path-browserify'
javascript 复制代码
import path from 'path-browserify'    
  1. element-ui组件按需引入

    1. 安装npm包 vite-plugin-style-import
    2. vite-config.js添加配置plugin
    javascript 复制代码
        styleImport({
            libs: [
              {
                libraryName: 'element-ui',
                esModule: true,
                resolveStyle: name => {
                  return `theme-chalk/${name}.css`
                }
              }
            ]
          })
        ```
  2. tui-editor npm包无法安装,删除相关页面及代码

  3. vite不支持CommonJS语法,require要换成import. 比如:

javascript 复制代码
// commonjs语法
const version = require('element-ui/package.json').version // element-ui version from node_modules

// ESM
import { version } from 'element-ui/package.json'
  1. require.context不支持,用import替换
javascript 复制代码
// src/store/index.js
import app from './modules/app'
import errorLog from './modules/errorLog'
import permission from './modules/permission'
import settings from './modules/settings'
import tagsView from './modules/tagsView'
import user from './modules/user'

const store = new Vuex.Store({
  modules:{
    app,
    errorLog,
    permission,
    settings,
    tagsView,
    user
  },
  getters
})
  1. process.env.VUE_APP_BASE_API是vuecli变量,未定义,替换为空字符串

至此升级完成

可以看到开发环境,输出的目标js是ESM

升级效果

开发环境启动速度的确是秒开

总结

  1. Vite 开发环境运行,直接输入ESM真的很快

  2. 但是vue-element-admin要完全升级到vite,有兼容难度。因为项目模块很多是CommonJS的,需要改动。后续项目升级到element-plus+vue3+vite5+ts,再次感受vite的速度。

项目地址: github.com/jovenwang12...

相关推荐
cyadyx1 天前
Vite 比 Webpack 构建效率更高
前端·webpack·node.js·vite
java1234_小锋1 天前
Vue3专题 - 组件基础
vue.js·vite
小锋java12342 天前
【技术专题】Vue3 - 生命周期
vue.js·vite
倾听醉梦语5 天前
React/Vite/Next.js 前端开发工具 SpotPatch:点击页面元素精准定位 JSX/TSX 源码
javascript·react·ai编程·vite·next.js·前端开发工具
fobwebs6 天前
Wordpress Xstore 主题安装Elementor Pro 后找不到某些Elements 组件的解决方法
element·wordpress·form·xstore·pro elements·elementor pro
小锋java12348 天前
【技术专题】Vue3 - 列表渲染
vue.js·vite
小锋java123410 天前
【技术专题】Vue3 - 条件渲染
vue.js·vite
shawxlee10 天前
vue3+elementplus+sass/scss安装配置教程:使用svg图标、引入外部字体、定义变量模块、修改组件样式、一键切换主题等
vue·sass·svg·字体·element·scss·主题样式
java1234_小锋13 天前
Vue3+Vite简介以及构建第一个HelloWorld实例
前端·javascript·vue.js·vite
万亿少女的梦16813 天前
基于Vue、Vite与CesiumJS的江西省铜矿资源WebGIS系统设计
vue·vite·cesiumjs·webgis·空间数据可视化