Vite学习笔记

一、法语:快

1、是一个面向现代浏览器的更轻、更快的Web应用开发工具

2、使用浏览器原生支持的ES Module,在开发模式下不需要打包,提升开发速度

3、vue-cli 开发模式下必须对项目打包才可以运行

二、Vite优点

1、快速冷启动

2、按需编译

3、模块热更新

4、生产环境使用Rollup打包,基于ES Module打包,体积小

5、开箱即用(TypeScript 内置支持、less/sass/stylus/postcss 内置支持、JSXWeb Assembly

PS: 使用Webpack打包的原因:

1、浏览器环境不支持模块化

2、零散的模块文件会产生大量的HTTP请求

这两个问题现代浏览器和HTTP2.0已经基本解决了。

三、核心功能

1、静态Web服务器

2、编译单文件组件(拦截浏览器不识别的模块并处理)

3、HMR(通过websocket实现)

四、Vite的使用

初始化创建项目
npm init vite-app vite-demo
切换到项目根目录
cd vite-demo
安装依赖
npm i
运行项目
vite serve
打包项目
vite build

五、实现原理

基本的思路:

1、开启静态Web服务器

使用第三方框架koa来模拟开启Web服务器

2、修改第三方模块的路径

处理:import vue from 'vue' => import vue from '/@modules/vue'

不处理:import App from './App.vue' (.或/都不处理)

3、加载第三方模块

判断如果是以 '/@modules/'结尾,说明是第三方模块,手动拼接好正确的地址,使用require去加载

4、编译单文件组件

两次请求:

把单文件组件编译为对象

编译单文件组件的模板并返回render函数

TypeScript 作为 JavaScript 的超集,通过引入类型系统、泛型、接口等特性,为前端开发带来了更高的类型安全性与代码可维护性。对于初学者而言,掌握其基础知识和使用方法是迈向高效开发的第一步。 ### 类型系统基础 TypeScript 的核心在于其强大的类型系统,包括基本类型(如 `number`、`string`、`boolean`)、数组类型、元组类型、枚举类型等。例如,可以显式地声明变量的类型: ```typescript let age: number = 25; let name: string = "Alice"; ``` 此外,还可以使用联合类型(Union Types)来表示一个值可以是几种类型之一: ```typescript let id: number | string; id = 123; // 合法 id = "abc"; // 合法 ``` ### 接口与类型别名 TypeScript 提供了 `interface` 和 `type` 两种方式来定义自定义类型。`interface` 更适合用于描述对象的形状,而 `type` 则适用于定义联合类型或更复杂的类型组合。例如: ```typescript interface User { name: string; age: number; } type ID = number | string; ``` 两者都可以实现类型定义,但在某些场景下选择其中之一更为合适。比如,`interface` 支持继承和实现,适合定义类的结构;而 `type` 更加灵活,可以用于定义联合类型。 ### 泛型 泛型允许在定义函数、接口或类时,不预先指定具体的数据类型,而是在使用时再指定。这种机制提高了代码的复用性和灵活性。例如,定义一个通用的数组函数: ```typescript function identity<T>(arg: T): T { return arg; } let output = identity<string>("Hello"); // 返回类型为 string ``` ### Vue 3 中的 TypeScript 使用 在 Vue 3 中,TypeScript 可以与 Composition API 结合使用,提供更强大的类型推导能力。例如,在组件中使用 `ref` 和 `defineComponent`: ```typescript import { defineComponent, ref } from 'vue'; export default defineComponent({ setup() { const message = ref('Hello, Vue with TypeScript!'); return { message }; } }); ``` 通过显式指定泛型参数,可以确保类型的安全性。例如,声明一个字符串数组: ```typescript const list = ref([] as string[]); ``` ### 实战建议 1. **快速掌握核心**:建议在 2 小时内通读基础类型、接口、泛型以及 Vue 3 组件的 `props` 和 `emits` 类型声明。 2. **实战开发**:使用 Vite 创建 Vue 3 + TypeScript 项目,实现一个带表单验证的组件,结合 `ref`、`computed` 和类型断言。 3. **深入生态**:学习 Vue Router 和 Pinia 的 TypeScript 用法,完成一个简单的单页应用(如博客列表 + 用户状态管理)。 ### 学习资源推荐 - **官方文档**:TypeScript 官方文档和 Vue 3 + TypeScript 官方指南是权威的学习资料。 - **工具链**:TypeScript Playground 可用于在线调试 TypeScript 代码,而 Vue Language Server 是 VSCode 中 Vue + TypeScript 的最佳插件。 通过以上内容的学习和实践,可以快速上手 TypeScript,并在实际项目中应用其特性,提升代码质量和开发效率[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值