# microFE **Repository Path**: github-26497262/micro-fe ## Basic Information - **Project Name**: microFE - **Description**: qiankun案例,主要实现三方依赖的提取。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2022-06-27 - **Last Updated**: 2025-05-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Vite学习 ## 目录 * * [1. 快速开始](#1--快速开始) * [2. base 配置打包公共路径](#2-base-配置打包公共路径) * [3. alias配置图片地址别名](#3-alias配置图片地址别名) * [4. 构建生产版本移除log打印](#4-构建生产版本移除log打印) * [5. 打包输出文件夹配置](#5-打包输出文件夹配置) * [6. 配置开发环境和生产环境变量](#6-配置开发环境和生产环境变量) * [7. CDN 引入](#7-cdn-引入) * [安装模块:](#安装模块) * [CDN引入与自动引入插件做对比:](#cdn引入与自动引入插件做对比) * [8. GZIP压缩](#8-gzip压缩) * [9.依赖分析](#9依赖分析) ## 1. 快速开始 安装脚手架: ```bash yarn create vite app cd app yarn ``` ## 2. base 配置打包公共路径 ```typescript // vite.config.ts import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' // https://vitejs.dev/config/ export default defineConfig({ base: './', plugins: [vue()] }) ``` 为防止部署项目时发生资源路径访问错误的隐患,这里配置相对路径来避免发生。 ## 3. alias配置图片地址别名 > ⚠️ts需要安装`@types/node`才能识别到`node_modules`文件夹下的模块 ```bash yarn add @types/node ``` 在`vite.config.ts` 文件中,设置别名配置: ```typescript import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' import { resolve } from 'path' // https://vitejs.dev/config/ export default defineConfig({ base: './', resolve: { alias: { '@': resolve(__dirname, 'src'), '@comp': resolve(__dirname, 'src/components') } }, plugins: [vue()] }) ``` 测试配置是否生效: ```vue // App.vue ``` 网页组件正常加载 ,说明别名配置成功 ## 4. 构建生产版本移除log打印 ```typescript // vite.config.ts export default defineConfig({ ... build: { minify: 'terser', // 默认为esbuild terserOptions: { compress: { drop_console: true, // 生产环境移除console drop_debugger: true // 生产环境移除debugger } } }, ... }) ``` ## 5. 打包输出文件夹配置 未配置输出文件夹和配置了输出文件夹对比,配置后的结构更加清晰明了 ```typescript // vite.config.ts ... export default defineConfig({ build: { ... rollupOptions: { output: { manualChunks(id) { // node_modules 下文件分包 if (id.includes("node_modules")) { return id .toString() .split("node_modules/")[1] .split("/")[0] .toString(); } }, chunkFileNames: "vendors/[name]-[hash].js", // 三方库文件 entryFileNames: "js/[name]-[hash].js", // entry js文件 assetFileNames: "[ext]/[name]-[hash].[ext]", // css文件 }, } }, ... }) ``` ## 6. 配置开发环境和生产环境变量 在**根目录**创建两个文件`.env.development`(开发环境配置文件)和`.env.production`(生产环境配置文件) ```typescript // .env.development VITE_BASE_API = '/mocks/get' ``` ```typescript // .env.production VITE_BASE_API = 'https://v1.hitokoto.cn/?c=f&encode=text' ``` 在App.vue中修改请求地址: ```vue ``` ## 7. CDN 引入 ### 安装模块: ```bash yarn add vite-plugin-cdn-import -D ``` 修改`vite.config.ts` 文件 ```typescript ... // 引入CDN插件 import importToCDN, { autoComplete } from 'vite-plugin-cdn-import' ... export default defineConfig({ ... plugins: [ ... importToCDN({ modules: [ { name: 'vue', var: 'Vue', path: 'https://unpkg.com/vue@next' }, { name: 'element-plus', var: 'ElementPlus', path: `https://unpkg.com/element-plus`, css: 'https://unpkg.com/element-plus/dist/index.css' } ] }) ], }) ``` 修改`main.ts` 文件: ```typescript import { createApp } from 'vue' import App from './App.vue' import ElementPlus from 'element-plus' createApp(App).use(ElementPlus).mount('#app') // createApp(App).mount('#app') ``` ### CDN引入与自动引入插件做对比: CDN是全局引入,esbuild会按需加载打包更小。 ## 8. GZIP压缩 vite内置GZIP压缩,nginx配置 ```纯文本 #Gzip module gzip on; gzip_disable "MSIE [1-6]\."; gzip_min_length 1k; gzip_http_version 1.1; gzip_types text/css text/xml application/javascript; ``` # 9.依赖分析 ```纯文本 yarn add rollup-plugin-visualizer -D ``` ```纯文本 // vite.config.ts import { defineConfig } from 'vite' import { visualizer } from "rollup-plugin-visualizer"; // https://vitejs.dev/config/ export default defineConfig({ base: './', plugins: [vue(), visualizer()] }) ```