将vite项目进行国际化改造

发表于 | 分类于 前端/前端业务

最近需要将已有的vite项目改造为国际化版本(短期先支持中文和英文),之前对于i18n的实践不多,在一番折腾之后终于将多语言成功落地,本文用来回顾一下整个过程。

初识前端GIS开发

发表于 | 分类于 前端/前端业务

等某次等待滴滴司机的途中,对Web地图功能的实现有点好奇,之前没怎么接触过,了解一下。

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源码分析

发表于 | 分类于 源码分析/Vue

在项目中使用Vue3Pinia已经很长时间了,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项目的构建存在一些优化的空间,比如构建时间、构建产物的体积、缓存命中等,经过一番折腾之后达到了还不错的效果,记录一下。

初识shader

发表于 | 分类于 游戏

最近打算学习实现一个水面倒影的游戏场景效果,参考的教程里面用到了shader相关的知识,我好像基本没有任何的3d图形编程基础,于是决定补习一下相关的概念,并在本文记录。