前端小白学习之路-Vben探索 vite 配置 - 1/50

ops/2024/12/21 22:25:10/

目的

  1. ApiHug 寻找一个前端解决方案
  2. 前端背景知识缺乏
  3. 整盘操作:前后全栈
  4. 80% 中小规模项目提效 30% +
  5. 全员全栈
  6. 快速构建
  7. 高度模块化
  8. AI Native
  9. ...

所以

  1. 裸学前端
  2. 高举高打,直接从复杂项目拆解
  3. AI 助手高度依赖
  4. 后端癖严重,高度模块, 结构化,架构
  5. 边学变搞此系列文章纯粹笔记目的两个: 记录过程 + 督促勿半途而弃

筹备

  1. js 基本知识:熟练
  2. css: 知晓
  3. vue: 知晓

首先前端解决方案现在其实非常成熟, 但是即便如此,还是给他们分门别类, 不同分类解决方案有差别, 从最容易得入手:

先从后端 admin 管理框架入手, 参考了很多家方案, 有 jhipster ,有各种 ***-admin, 部分 star 很多但是有点偏老, 部分太庞大耦合太高,无从下手, 选了个架构比较新, 还灭有长到那么复杂的框架做为分析对象:

Vben AdminVben Admin & 企业级管理系统框架icon-default.png?t=O83Ahttps://doc.vben.pro/分10期还是50期不知道, 变走边看把, 先:

  1. 跑通他们的 demo 
  2. 然后根据文档拆
  3. 分析代码可以 cursor  + gpt (apismart)

下面文章,大部分是我使用 apismart 对接 gpt-4o 解释的结果!

ApiSmart Api design Copilot - ApiHugApiSmart make your api design and implement happiericon-default.png?t=O83Ahttps://apihug.com/zhCN-docs/copilot

001 Internal - vite-config

涵盖信息:

  1. vite 配置
  2. vite 插件
  3. 环境变量

谁使用? 你项目的 vite.config.mts 一般引用到这个包, 方便快速定义啦:

import { defineConfig } from '@vben/vite-config';export default defineConfig(async () => {return {application: {archiver: false},vite: {server: {proxy: {'/api': {changeOrigin: true,rewrite: (path) => path.replace(/^\\/api/, ''),// mock代理目标地址target: '<http://localhost:5320/api>',ws: true,},},},},};
});

配置

内置了两种,一种是 application 一种是 library, 如果有 index.html 默认就是 application 模式, library 这里不分析;

Application

https://github.com/vbenjs/vue-vben-admin/blob/main/internal/vite-config/src/config/application.ts

效果和一般意义上的 vite-config.mjs 一个效果,就是 vite 编译的配置。

概述

这段代码定义了一个函数 defineApplicationConfig,用于配置 Vite 应用程序的构建和开发环境。它通过合并用户配置、环境变量和插件来生成最终的 Vite 配置。

关键组件

  1. 导入
    • 代码导入了 Vite 的类型和函数,以及一些自定义模块和实用工具。
    • 它还使用了 Node.js 的 path 模块来处理文件路径。
  2. defineApplicationConfig 函数
    • 这是一个主函数,用于定义应用程序的配置。
    • 它接受一个可选的 userConfigPromise 参数,这是一个返回用户配置的 Promise。
  3. 加载配置和环境
    • 使用 loadAndConvertEnv 函数加载和转换环境变量。
    • 使用 loadEnv 函数根据当前模式加载环境变量。
  4. 插件加载
    • 使用 loadApplicationPlugins 函数加载应用程序所需的插件。
    • 插件配置包括压缩、国际化、PWA 支持等。
  5. 应用程序配置
    • 定义了 Vite 的基本配置,包括构建选项、CSS 选项、ESBuild 配置、插件和服务器配置。
    • 构建选项指定了输出文件的命名规则和目标 ECMAScript 版本。
    • CSS 选项通过 createCssOptions 函数生成,允许注入全局 SCSS 样式。
  6. 合并配置
    • 使用 mergeConfig 函数合并通用配置和应用程序配置,生成最终的 Vite 配置。
  7. createCssOptions 函数
    • 生成 CSS 预处理器选项。
    • 如果 injectGlobalScsstrue,则为 SCSS 文件注入全局样式。

示例用法

假设你有一个用户配置函数 userConfig,你可以这样使用 defineApplicationConfig

import { defineApplicationConfig } from './application';const userConfig = async (config) => {return {application: {appTitle: 'My App',base: '/',port: 3000,},vite: {// 其他 Vite 配置},};
};export default defineApplicationConfig(userConfig);

总结

defineApplicationConfig 函数是一个用于配置 Vite 应用程序的工具。它通过合并用户配置、环境变量和插件来生成一个完整的 Vite 配置,支持构建和开发环境的各种需求。

Plugins

被 Application 初始化时候加载, 也是根据配置,是否需要加载对应的 plugin

概述

这段代码定义了一组函数,用于根据不同的条件加载 Vite 插件。Vite 是一个用于构建现代 Web 应用程序的工具,这些插件可以扩展 Vite 的功能,比如支持 Vue、国际化、PWA、压缩等。

关键组件

  1. 导入
    • 代码导入了 Vite 插件的类型和一些具体的插件。
    • 还导入了一些自定义插件模块。
  2. loadConditionPlugins 函数
    • 接受一个条件插件数组 conditionPlugins
    • 遍历每个条件插件,如果条件为真,则加载相应的插件。
  3. loadCommonPlugins 函数
    • 根据通用选项加载常用的 Vite 插件。
    • 包括 Vue 支持、Vue JSX 支持、开发工具、元数据注入和可视化工具。
  4. loadApplicationPlugins 函数
    • 根据应用程序选项加载特定的 Vite 插件。
    • 支持的功能包括国际化、打印信息、懒加载表格、模拟数据、应用加载注入、许可证、PWA 支持、压缩、HTML 插件、导入映射、额外的应用配置和归档。
  5. loadLibraryPlugins 函数
    • 根据库选项加载特定的 Vite 插件。
    • 支持的功能包括生成类型声明文件(dts)。
  6. 插件条件
    • 每个插件都有一个条件,只有在条件为真时才会加载该插件。
    • 例如,isBuild 用于判断当前是否为构建模式,compress 用于判断是否需要压缩。

示例用法

假设你有一个应用程序配置对象 appOptions,你可以这样使用 loadApplicationPlugins

import { loadApplicationPlugins } from './index';const appOptions = {isBuild: true,env: process.env.NODE_ENV,i18n: true,compress: true,compressTypes: ['gzip'],// 其他选项...
};loadApplicationPlugins(appOptions).then((plugins) => {console.log('Loaded plugins:', plugins);
});

总结

这段代码提供了一种灵活的方式来根据不同的条件加载 Vite 插件。通过这种方式,你可以根据开发或生产环境的不同需求,动态地配置和扩展 Vite 的功能。


http://www.ppmy.cn/ops/143868.html

相关文章

Sigrity System Explorer Snip Via Pattern From Layout模式从其它设计中截取过孔模型和仿真分析操作指导

Sigrity System Explorer Snip Via Pattern From Layout模式从其它设计中截取过孔模型和仿真分析操作指导 Sigrity System Explorer Snip Via Pattern From Layout模式支持从其它设计中截取过孔模型用于仿真分析,同样以差分模板为例 具体操作如下 双击打开System Explorer软件…

*【每日一题 基础题】 [蓝桥杯 2024 省 B] 好数

[蓝桥杯 2024 省 B] 好数 好数 一个整数如果按从低位到高位的顺序&#xff0c;奇数位&#xff08;个位、百位、万位……&#xff09;上的数字是奇数&#xff0c;偶数位&#xff08;十位、千位、十万位……&#xff09;上的数字是偶数&#xff0c;我们就称之为“好数”。 给定一…

防火墙内局域网特殊的Nginx基于stream模块进行四层协议转发模块的监听443 端口并将所有接收转发到目标服务器

在一些特殊场合下, 公司内部网络防火墙限制, 不能做端口映射, 此时可以使用nginx的做从四层协议转发, 只走tcp/ip协议, 而不走http方式, 可以做waf设置, 就可以做443, 或其它端口, 从而达到被直接转发到远程服务器效果 机房只映射了一个IP:22280, 而需求是这个SDK只能通过…

Java系统对接企业微信审批项目流程

若依做的一个系统需求需要对接企业微信的人员去审核订单 回款之类&#xff0c;以下是详细步骤. 1.首先登入企业微信管理后台&#xff1a; 企业微信 2.找到应用管理 3.自建一个应用 4.这些数据都可以拿到 5.配置可信Ip 6.进入有两种方法让你去配置 &#xff0c;第一种用公司的…

clickhouse-介绍、安装、数据类型、sql

1、介绍 ClickHouse是俄罗斯的Yandex于2016年开源的列式存储数据库&#xff08;DBMS&#xff09;&#xff0c;使用C语言编写&#xff0c;主要用于在线分析处理查询&#xff08;OLAP&#xff09;&#xff0c;能够使用SQL查询实时生成分析数据报告。 OLAP&#xff08;On-Line A…

Excel根据身份证号,计算退休日期和剩余天数!

大家好&#xff0c;我是小鱼。 日常工作中&#xff0c;有时我们需要使用Excel表格统计男女员工退休日期或者退休剩余天数&#xff0c;很多新手小伙伴可能不知道如何下手。今天就跟大家分享一下WPS中的Excel表格数据如果根据身份证号&#xff0c;自动批量计算退休日期和剩余天数…

详细解读TISAX认证的意义

详细解读TISAX认证的意义&#xff0c;犹如揭开信息安全领域的一颗璀璨明珠&#xff0c;它不仅代表了企业在信息安全管理方面的卓越成就&#xff0c;更是通往全球汽车供应链信任桥梁的关键一环。TISAX&#xff0c;即“Trusted Information Security Assessment Exchange”&#…

拼多多电子面单接入:常见问题及专业解决方案

在电商行业的激烈竞争中&#xff0c;物流效率成为商家提升客户满意度的关键。拼多多电子面单API的接入&#xff0c;为商家提供了一个高效、便捷的物流解决方案。然而&#xff0c;在接入过程中&#xff0c;商家可能会遇到一系列常见问题。本文将针对“拼多多电子面单接入的常见问…