将vite项目进行国际化改造
最近需要将已有的vite项目改造为国际化版本(短期先支持中文和英文),之前对于i18n的实践不多,在一番折腾之后终于将多语言成功落地,本文用来回顾一下整个过程。
vite构建的拆包策略
前端拆包策略是一个非常个性化的话题,也是性能优化中首屏加载非常重要的一环。在不同的业务、不同的项目都有自己的策略。
在几年前,我负责的项目采用的是webpack
+ vue-cli
,构建策略是
- node_modules会单独打包到
vendor.js
文件 - 其他业务代码打包到
app.js
import()
动态加载的模块会打包成单独的chunk
最近一两年逐渐切换到vite,vite的构建主要是依赖于rollup
,默认构建ESM产物,同时通过@vitejs/plugin-legacy
构建兼容低版本浏览器的systemjs产物。
在这个过程中,如何拆包、如何配置缓存等问题,都是需要考虑的。本文将深入这些问题,并尝试给出一个vite项目构建的解决方案。
理解二分查找
发表于 | 分类于 数据结构和算法
二分查找用于在有序的列表中快速查询。虽然二分的思路很简单,但是要写出完全正确的二分查找代码,以及灵活使用二分查找解决问题,并不是那么简单。
之前在某个地方看到说,能一次性完全写对二分搜索的程序员寥寥无几。
本文将从分治开始,理解搜索区间,编写出正确的二分搜索代码。
在VitePress中实现内联Vue组件
发表于 | 分类于 技术原理
VitePress默认就支持在markdown中使用Vue组件,唯一的缺点是需要单独将SFC组件文件引入。
本文将探究一种新的方式,直接在markdown文档中编写Vue组件。
初识并查集
发表于 | 分类于 数据结构和算法
并查集可以快速检测两个节点是否连通(具有相同的父节点),虽然用邻接矩阵也可以实现,但并查集空间复杂度是O(n)
,且时间复杂度也可以接近O(1)
,在处理图中某些特定问题非常有用。
博客v0.9迭代记录
发表于 | 分类于 博客
之前的博客文章是通过hexo来管理的,其目录结构类似于
_drafts
目录存放草稿_posts
目录保存了全部已发表的文章
这种平铺的结构并不是很容易直观地管理知识点,同时之前实现的SSR
并不支持mdx
,让一个前端开发者的博客缺失了不少乐趣。
因此我决定回归博客内容为主的本质,根据markdown frist
原则、按照目录重新构建博客。
此外云服务器的续费价格变贵、免费SSL证书时效变短,感觉已经不太适合使用云服务器来部署独立域名的个人博客了,因此决定将博客构建为静态网站。
一番技术选型后,我确定使用vitepress作为开发构建工具,使用cloudflare作为部署服务器。本文将整理整个博客重构过程中的一些要点。
TypeScript类型体操
发表于 | 分类于 编程语言/TypeScript
最近看到了一道TS类型体操的面试题,要求实现日期格式化的FormatDate<DD-MM-YY>
,用于约束特殊时间格式的字符串。
感觉有点震撼,现在面试八股文都这么考了?震撼的同时还发现,我TM居然不会!
因此我决定用一点时间来学习一下TS的类型体操,并整理在这篇文章中。
我对于AIGC的一些看法
发表于 | 分类于 杂项
在过去的一年多时间里面,AIGC似乎成了一个大家都耳熟能详、甚至常常挂在嘴边的词语。
本文将总结我——一个普通的程序员,截止目前对于AIGC的一些个人看法。
初识微前端
在过去几年中,陆陆续续就会听到“微前端”的声音。本文将从技术选型的角度,了解什么是微前端,整理目前社区使用的几种方案,以及实现微前端的一些技术要点,最后还附带一些个人对于微前端的看法。
pinia源码分析
在项目中使用Vue3
和Pinia
已经很长时间了,Pinia作为一个组合式Api的Vue状态管理库,在使用过程中也有一些心得。
本文将从源码的角度分析Pinia,最后会实现一个简易版的Pinia。
一种通过DAP协议实现代码运行可视化的方案
发表于 | 分类于 技术原理
最近看到了一个代码可视化的工具pythontutor,可以让代码按步展示详细过程。感觉有点意思,决定尝试实现一下。
在研究过程中发现,借助本地调试器提前拆分出代码的步骤执行顺序是一个不错的方案,因此又先转向如何通过程序控制调试器,中间了解到诸如DAP、CDP协议等不少知识,决定记录一下。
股票知识扫盲
发表于 | 分类于 杂项
看到标题莫慌!我完全没有想要炒股的念头。
过去一两年,老是听到说股市不行,经济不景气的问题;恰好我对之前对股市是一窍不通,现在打算了解一下相关的概念,方便在与人辩经的过程中不被忽悠。
TypeScript模块机制
在之前的一篇文章提到了NodeJS中CommonJS和ESModule混用的问题。
现在的前端项目中,还可能存在TS和JS的混用,叠加上各种模块机制的混用,导致整个项目比较复杂,以至于在开发过程中,可能会遇见很多不同的错误,这些错误大多数是没有弄懂TS的模块机制导致的。
本文将整理TypeScript中的模块系统,以及模块混用时的一些常见问题。
《这就是ChatGPT》读书笔记
发表于 | 分类于 读书笔记
今年双11只在图灵上面买了这一本书《这就是ChatGPT》,趁着周末看一下(貌似很久没有写读书笔记了,其实是很久没有看书了...
写这篇文章除了记录读书笔记之外,还有一个比较重要的任务:通过ChatGPT等AI工具阅读长篇内容来帮助我整理读书笔记。
记一次vite项目打包优化
新项目是使用vite作为开发工具的,最近发现vite项目的构建存在一些优化的空间,比如构建时间、构建产物的体积、缓存命中等,经过一番折腾之后达到了还不错的效果,记录一下。