Vite

700 阅读3分钟

1. vite 构建工具

是一种新型前端构建工具,能够显著提升前端开发体验。它主要由两部分组成:

1.1 Vite生产环境为什么选择Rollup做构建工具
Rollup是基于ES6JavaScript打包工具。
它将小文件打包成一个大文件或者更复杂的库和应用,打包既可用于浏览器和Node.js使用。 
Rollup最显著的地方就是能让打包文件体积很小。
相比其他JavaScript打包工具,Rollup总能打出更小,更快的包。
因为Rollup基于ES6模块,比WebpackBrowserify使用的CommonJS模块机制更高效。
1.2 优点
  • 因为没有打包工作要做,所以服务器冷启动非常快【快速的冷启动】
  • 代码是按需编译的,因此只有在当前页面上实际导入的代码才会编译,不必等到整个应用程序打包后才开始开发,这对于有几十个页面的应用程序来说是一个很大的不同【真正按需编译】
  • 热模块更新(HMR)的性能与模块总数解耦,这使得无论应用程序有多大,HMR都能保持快速【即时热模块更新】

2. 下载使用 vite

    yarn create -g vite   // 下载 vite
    yarn    // 安装依赖
    yarn dev    // 启动项目

image.png

image.png
创建完的项目结构是这样的:
image.png

vite.config.js
image.png

package.json
image.png

2.1 安装所需依赖
  • 安装 vue-router yarn add vue-router
  • 引入 element-plus 组件库 yarn add element-plus
  • 下载vuex yarn add vuex
  • 安装axios yarn add axios
  • 安装 js-cookie yarn add js-cookie
  • 安装 sass 【mac 可以直接安装】如下图 image.png 或者yarn add sass-loader , yarn add node-sass, yarn add sass
    安装失败参考:blog.csdn.net/qq_42144899…
  • 安装 style-resources-loader 【导入css 预处理器的一些公共的样式文件变量, 配置全局样式】yarn add style-resources-loader
  • 安装 vue-cli-plugin-style-resources-loader 【配置全局样式】yarn add vue-cli-plugin-style-resources-loader
2.2 配置主题色
// 可以在 [`packages/theme-chalk/src/common/var.scss`](https://github.com/element-plus/element-plus/blob/dev/packages/theme-chalk/src/common/var.scss).文件中查找SCSS变量
// 按需导入,重写自己所需样式,覆盖原样式(使用scss)
// element-variables.scss 文件名
@forward "element-plus/theme-chalk/src/common/var.scss" with (
  $colors: (
    "primary": (
      "base": #F37021,
    ),
    "success": (
      "base":  #67c23a,
    ),
    "warning": (
      "base":  #e6a23c,
    ),
    "danger": (
      "base":  #f56c6c,
    ),
    "info": (
      "base":  #909399,
    ), 
  ),
  $text-color: (
    'primary': red,
    'regular': #606266,
    'secondary': #909399,
    'placeholder': #c0c4cc,
  ),
  $border-radius: (
    'base': 4px,
    'small': 2px,
    'round': 20px,
    'circle': 100%,
  ),
);

// 如果你正在使用vite,并且你想在按需导入时自定义主题。
// 使用 `scss.additionalData` 来编译所有应用 scss 变量的组件。
  css: {
    preprocessorOptions: {
      scss: {
        additionalData: "@import './src/styles/element-variables.scss';"
      },
    },
  },
2.3 代码分析

在开发期间 Vite 是一个服务器,index.html 是该 Vite 项目的入口文件
关键变化是 index.html 中的文件导入方式
这样main.js中就可以使用ES6 Module方式组织代码
image.png

浏览器会自动加载这些导入,vite会启动一个本地服务器处理不同这些加载请求,对于相对地址的导入,要根据后缀名处理文件内容并返回,对于裸模块导入要修改它的路径为相对地址并再次请求处理。
image.png

再根据模块package.json中的入口文件选项获取要加载的文件。
image.png

参考:
zhuanlan.zhihu.com/p/162072130
juejin.cn/post/691001…