Vite学习笔记(四)Vite源码分析
本次博客正式进入源码的解析部分,我们主要分析源码中的以下几个部分:
- 如何进行配置合并与生成,即resolveConfig部分
- 插件的调用机制,即pluginContainer
- 模块之间的引用图谱部分,即moduleGraph
- vite的热更新模块内,即hmr
- vite的依赖打包优化部分,即optimizeDeps
本次博客正式进入源码的解析部分,我们主要分析源码中的以下几个部分:
我们在迁移到vite的时候,可能会遇到一个情况,就是旧的项目中如果采用webpack,可能会将css文件直接当作css moudle去使用,但是这一点在vite中是不支持的,想要当作css module去引入,就必须以module.css作为扩展名,在研究了以下vite的源码之后,我们可以通过插件来实现这个无缝切换,并且实现css的热更新。
这篇博客我们介绍一下Vite的插件API,并且开发一个简单的插件来支持MPA项目。
本系列的博客分为三个部分,分别介绍Vite的基本概念与使用,Vite的插件API与插件开发,以及Vite的源码解析。
这个算法是图论中比较经典的最大流问题的算法,使用场景有很多,比如在互联网中已知中间链路每一段的最大流量,如何最快速地把数据从一个节点传递到另一个节点。
LFU缓存是非常常见的缓存策略算法,如果考虑在O(1)的复杂度下实现,还是有一点意思的。
Xposed是一个运行于Android操作系统的钩子框架。其通过替换Android系统的关键文件,可以拦截几乎所有Java函数的调用,并允许通过Xposed模块中的自定义代码更改调用这些函数时的行为。因此,Xposed常被用来修改Android系统和应用程序的功能。
之前的一篇关于机器智能的本质就是分类和组合的博客,我们提到过,很多应用科学将实际问题变成了信息处理的分类,组织,查找和重组,而计算机的算法再把这些信息处理问题变为计算问题。显然,这里有两个桥梁,通过第一个桥梁,很多问题其实到了算法这一步都是等价的,这次我们就用卡特兰数来说明这个问题。
计算机虽然最初是用于科学计算的,但是很快他处理的对象就涵盖了世界上的所有东西,有具体的,比如人,动物和物品,也有抽象的,比如加法,函数等。对于这些东西,无论是抽象的还是具体的,大部分操作其实不是计算,而是分类,组织,查找和重组。因此很多应用科学将实际问题变成了信息处理的分类,组织,查找和重组,而计算机的算法再把这些信息处理问题变为计算问题。显然,这里有两个桥梁,我们这次就围绕这两个桥梁展开。