惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Jina AI
Jina AI
Recent Announcements
Recent Announcements
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
月光博客
月光博客
A
About on SuperTechFans
Vercel News
Vercel News
博客园 - 【当耐特】
爱范儿
爱范儿
Blog — PlanetScale
Blog — PlanetScale
阮一峰的网络日志
阮一峰的网络日志
V
V2EX
D
Docker
博客园 - 叶小钗
The Cloudflare Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
H
Help Net Security
I
InfoQ
博客园 - 三生石上(FineUI控件)
博客园 - Franky
Microsoft Azure Blog
Microsoft Azure Blog
The GitHub Blog
The GitHub Blog
大猫的无限游戏
大猫的无限游戏
MongoDB | Blog
MongoDB | Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报

博客园 - 晨港飞燕刘彦登

OpenJdk 17.0.19下载地址 老登谈农村发展2026 什么是runbook 股票知识 图标设计 "中登"介绍 标识和LOGO概念区别 修仙等级 什么是内耗 FL Studio介绍 什么是Remix Idea识别Freemarker语法并高亮显示 AI Agent、scaling law、Transformer 什么是CATIA 轿车和SUV的区别? 混动车类型 命中有时终须有,命中无时莫强求。 上海摩托车驾驶证相关问题 wps excel下拉框为每个下拉选项设置不同背景颜色 JVM参数讲解 CPU(中央处理器)核心的数量 什么是虚荣心 适合晨读的24篇英语短文,涵盖高考语法、词汇、短语知识点 项目经理,你在程序员眼中是啥样子的?你造吗? 三条公式,让项目经理和PMO的工作汇报脱颖而出【附实例】 优秀的PMO&项目经理必备的12种模型 史上最全的项目风险清单及应对措施要点--再也不愁项目风险管理了
vite介绍
晨港飞燕刘彦登 · 2025-04-29 · via 博客园 - 晨港飞燕刘彦登

一、vite.config.ts是什么文件

vite.config.ts 是 Vite 项目的核心配置文件,使用 TypeScript 编写(如果是 JavaScript 项目,则对应 vite.config.js)。它用于自定义 Vite 构建工具的各类行为,例如开发服务器设置、构建选项、插件配置等。


主要功能

  1. 基础配置

    • 定义入口文件、输出目录、公共路径等。

    • 配置开发服务器(端口、代理、HTTPS 等)。

    • 设置构建选项(代码压缩、分包策略、目标环境等)。

  2. 插件集成

    • 添加 Vite 插件(如 @vitejs/plugin-reactvite-plugin-pwa 等)。

    • 集成 Rollup 插件(Vite 基于 Rollup,兼容其生态)。

  3. 环境变量与模式

    • 区分 development(开发)和 production(生产)环境。

    • 通过 defineConfig 结合环境变量动态配置。

  4. 其他高级功能

    • CSS 预处理器配置(如 Sass、Less)。

    • 文件别名(resolve.alias)。

    • 服务端渲染(SSR)配置。


示例代码

import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';
import path from 'path';

export default defineConfig({
  plugins: [react()], 

关键点

  • TypeScript 支持:文件使用 .ts 扩展名,需确保项目已安装 @types/node 以支持 Node.js 相关类型。

  • 热更新:修改配置后会自动重启开发服务器。

  • 扩展性:可通过函数形式返回动态配置(基于环境变量或命令行参数)。


与 webpack.config.js 的区别

Vite 的配置更简洁,因为:

  1. 默认支持 ES Modules 和现代浏览器特性。

  2. 利用原生 ESM 实现快速的开发服务器启动(无需打包)。

  3. 配置语法更直观,对常见需求(如 CSS 模块、HMR)开箱即用。

如果需要更复杂的构建流程,仍可通过插件系统扩展(如 vite-plugin-legacy 兼容旧浏览器)。

二、什么是Vite

Vite 是一个现代化的前端构建工具,由 Vue.js 的作者 尤雨溪(Evan You) 开发,旨在提供更快的开发体验和高效的构建流程。它的名字来源于法语单词 "Vite"(意为“快速”),反映了它的核心优势——极速的开发服务器启动和热更新


Vite 的核心特点

1. 闪电般的启动速度

  • 传统打包工具(如 Webpack)需要先打包整个应用才能启动开发服务器,而 Vite 利用浏览器原生支持 ES Modules (ESM),直接按需加载源码,无需打包。

  • 启动时间几乎与项目规模无关,即使是大型项目也能秒开。

2. 即时热更新(HMR)

  • 修改代码后,Vite 仅更新变动的模块,而不是重新打包整个应用,使得热更新(HMR)速度极快。

3. 开箱即用的功能

  • 支持 TypeScript、JSX、CSS 预处理器(Sass/Less)、PostCSS 等,无需额外配置。

  • 内置 静态资源处理(图片、JSON、Worker 等)。

4. 优化的生产构建

  • 生产环境使用 Rollup 进行高效打包,支持 代码分割(Code Splitting)、Tree Shaking 等优化。

5. 框架无关,但提供官方插件

  • 虽然 Vite 由 Vue 团队开发,但它完全框架无关,支持:

    • React@vitejs/plugin-react

    • Vue@vitejs/plugin-vue

    • Svelte@sveltejs/vite-plugin-svelte

    • LitPreact 等。


Vite 的工作原理

开发模式(Dev Server)

  1. 基于原生 ESM

    • 浏览器直接请求源码,Vite 按需编译并返回(如 .vue.ts 文件)。

    • 无需打包,启动极快。

  2. 依赖预构建

    • 使用 esbuild(Go 语言编写,比 JavaScript 快 10-100 倍)预构建 node_modules 依赖项,转换为 ESM 格式。

生产模式(Build)

  • 使用 Rollup 进行打包,生成高度优化的静态文件(支持代码分割、懒加载等)。


Vite vs Webpack

特性ViteWebpack
启动速度 ⚡ 极快(按需编译) 🐢 较慢(需打包整个应用)
HMR 速度 ⚡ 极快(仅更新变动模块) 🐢 较慢(需重新构建依赖图)
配置复杂度 🟢 简单(约定优于配置) 🔴 复杂(需手动配置 Loader/Plugin)
生产构建 Rollup(高效但插件较少) 自研(生态更成熟)
适用场景 现代浏览器项目、SPA、SSR 复杂项目、需要深度定制

如何使用 Vite?

1. 快速创建项目

然后选择框架(React、Vue、Svelte 等)。

2. 启动开发服务器

访问 http://localhost:3000,修改代码立即生效。

3. 构建生产版本

生成优化的静态文件在 dist/ 目录。


总结

✅ 适合 Vite 的场景

  • 需要快速启动和热更新的现代前端项目。

  • 使用 Vue、React、Svelte 等框架的 SPA 或 SSR 应用。

  • 希望减少构建配置,享受开箱即用的体验。

❌ 不适合 Vite 的场景

  • 需要深度定制构建流程(如特殊 Webpack Loader)。

  • 必须兼容旧浏览器(需额外插件支持)。

Vite 代表了前端工具链的未来趋势,更快的开发体验 + 更简单的配置,已经成为许多新项目的首选构建工具! 🚀

三、TypeScript与JavaScript的区别

TypeScript 和 JavaScript 是两种紧密相关但又有重要区别的编程语言。以下是它们的核心区别:


1. 类型系统

特性TypeScript (TS)JavaScript (JS)
类型检查 静态类型(编译时检查类型错误) 动态类型(运行时才检查类型)
变量类型 需要显式或隐式声明类型(如 let age: number 无需声明类型(如 let age = 25
类型推断 支持自动类型推断 无类型推断

示例:


2. 编译与运行

特性TypeScriptJavaScript
编译需求 需用 tsc 编译成 JS 才能运行 直接由浏览器/Node.js 执行
兼容性 可编译为 ES3/ES5/ES6+ 等版本 依赖运行环境支持的 ES 版本

流程对比:

TypeScript (.ts) → 编译 (tsc) → JavaScript (.js) → 执行
JavaScript (.js) → 直接执行

3. 面向对象编程(OOP)

特性TypeScriptJavaScript
类成员修饰符 支持 public/private/protected ES6+ 支持类,但无访问修饰符
接口(Interface) ✅ 支持接口定义 ❌ 不支持
抽象类 ✅ 支持 abstract 类 ❌ 不支持

示例:


4. 工具与生态

特性TypeScriptJavaScript
错误提示 代码编辑时实时提示类型错误 运行时才能发现错误
IDE 支持 强大的自动补全和重构(VS Code) 基础支持
流行框架 React/Vue/Angular 均支持 TS 原生支持,但需额外类型定义

5. 适用场景

场景TypeScript 优势JavaScript 优势
大型项目 类型安全,减少潜在错误 灵活性高,快速原型开发
团队协作 清晰的接口定义,降低沟通成本 无需编译,直接运行
旧代码维护 渐进式迁移(可混合 JS 和 TS) 无需改造
前端框架开发 React/Vue 官方推荐使用 TS 传统项目仍广泛使用 JS

总结

  • 选择 TypeScript
    适合需要类型安全、长期维护的大型项目,尤其是团队协作或使用现代前端框架(如 React/Vue/Angular)。

  • 选择 JavaScript
    适合小型项目、快速原型开发或无需复杂类型系统的场景。

关系
TypeScript 是 JavaScript 的超集(所有合法的 JS 代码都是合法的 TS 代码),通过添加静态类型和其他高级特性来增强 JS。

四、idea插件Unocss是什么用

Unocss 是一个即时 (On-Demand) 的原子化 CSS 引擎,类似于 Tailwind CSS,但更轻量、灵活且高性能。它的核心思想是按需生成 CSS 工具类,避免传统 CSS 框架的冗余代码,同时提供极快的开发体验。


Unocss 的主要用途

1. 原子化 CSS 工具类

  • 提供类似 Tailwind 的工具类(如 m-4text-red-500),但按需生成,减少 CSS 体积。

  • 支持自定义规则,轻松扩展自己的工具类。

2. 极快的开发体验

  • 即时编译:在代码中写 class="m-4",Unocss 会立即生成对应的 CSS,无需手动配置或预编译。

  • 热更新极快:修改样式后几乎无延迟生效。

3. 轻量高效

  • 相比 Tailwind,Unocss 不生成未使用的 CSS,打包后的文件更小。

  • 使用 ESBuild 进行超快的样式生成。

4. 框架无关

  • 支持 Vue、React、Svelte、SolidJS 等主流前端框架。

  • 可与 Vite、Webpack、Rollup 等构建工具集成。


Unocss vs Tailwind CSS

特性UnocssTailwind CSS
按需生成 ✅ 真正按需(只生成用到的类) ❌ 预生成所有类(需 PurgeCSS 优化)
性能 ⚡ 极快(ESBuild 驱动) 🐢 较慢(PostCSS 处理)
配置 🔧 极简(约定优于配置) 📜 较复杂(需配置 tailwind.config.js
自定义 🛠️ 灵活(动态规则) 🔧 支持但稍显繁琐
体积 📦 极小(无未使用的 CSS) 📦 较大(需优化)

如何在项目中使用 Unocss?

1. 安装(以 Vite + Vue 为例)

npm install -D unocss @unocss/reset

2. 配置 vite.config.ts

import { defineConfig } from 'vite'
import Unocss from 'unocss/vite'
import { presetUno } from 'unocss'

export default defineConfig({
  plugins: [
    Unocss({
      presets: [presetUno()], 

3. 引入基础样式(可选)

在 main.ts 中添加:

import '@unocss/reset/tailwind.css' 

4. 在组件中使用

<template>
  <div class="m-4 p-2 text-red-500 bg-gray-100 hover:bg-blue-200">
    Hello Unocss!
  </div>
</template>

运行 npm run dev,Unocss 会自动生成对应的 CSS 样式。


Unocss 的高级功能

1. 自定义规则

Unocss({
  rules: [
    ['flex-center', { display: 'flex', 'justify-content': 'center', 'align-items': 'center' }],
  ],
})

然后可以直接用:

<div class="flex-center">居中元素</div>

2. 动态工具类

支持 变量 和 动态生成

<div class="text-${color}-500">动态颜色</div>

3. 图标支持(Unocss Icons)

npm i -D @unocss/preset-icons @iconify/json

配置:

presets: [
  presetUno(),
  presetIcons({ scale: 1.2 }),
]

使用:

<div class="i-mdi-alarm text-2xl" /> 

适用场景

✅ 适合 Unocss:

  • 追求极致性能开发体验的项目。

  • 希望减少 CSS 体积,避免冗余样式。

  • 需要快速原型开发,不想写传统 CSS。

❌ 不适合 Unocss:

  • 需要精细控制 CSS 的传统项目。

  • 团队不熟悉原子化 CSS 概念。


总结

Unocss 是一个更现代、更轻量、更灵活的 Tailwind 替代方案,特别适合 Vite + 现代前端框架 的项目。它的按需生成机制和高性能使其在开发体验和构建优化上都有显著优势。如果你喜欢 Tailwind 但希望更快的速度和更小的体积,Unocss 是一个绝佳选择! 🚀