resso 源码解析
在之前用 React 写一些小项目的时候有时也需要用到状态管理,但是用 Redux 有一种“大材小用”感觉,就在寻找有没有很精巧的实现,最好是响应式的,最后搜索了一番在 Github 发现了两个满足我需求的库:
valtio
resso
// valtio
import resso fro...
koa洋葱结构解析
经常在使用 koa 的时候,通过 .use 的形式来注册各种中间件,例如下面一段代码
app.use(async (ctx, next) => {
console.log(1);
await next();
console.log(2);
});
app.use(async (ct...
[javaScript]ES2023 引入非破坏性方法
对于 Array 的一些操作,例如 reverse、sort 等都会改变原数组,ES2023 对以下这些方法进行了拓展,提供了相同功能但是返回新副本的方法。
toReversed
toSorted
toSpliced
with
下面进行一个详细的介绍。
toReversed
revers...
使用jsx来编写模板
前言
模板引擎这个应该都不陌生,最早可以追溯到前后端还没分离的时候,后端为了循环、判断值之类简化编写流程而使用的,毕竟手动拼接字符串之类的也太麻烦了。
下面是 php easytpl 的一个示例,从这个可以看到模板引擎的基本用途。
use PhpPkg\EasyTpl\EasyTemplate...
hook下如何书写发布订阅
这篇文章的思路来源为 ahooks,因为 react 已经有相对应的实现了,所以这里主要介绍 vue 下如何实现一个 hook 的发布订阅。
假设有一个需求,当价格发生改变的时候刷新列表,在 vue 中很自然而然想到调用 watch 观察,但是这样的调用还是有点繁琐。例如下面一段伪代码
imp...
monorepo 如何解决别名问题
得益于 pnpm 软链接实现现在 monorepo 项目已经十分成熟了,不过在写项目时候还是遇到很多痛点,例如:
如果我有多个 packages 项目并且使用 TypeScript,那么我肯定希望是写的都是 ts,在需要调用的时候通过工具来完成这一过程的转译,不过在实际开发中可能使用了 vi...
TypeScript 类型收窄
写这篇文章是因为最近在写一个管理异步队列的库,但是有一些类型推导不太好写,例如上面的期待是
if (values.stauts === 'error') {
// values.data to Error
}
后面查询了一些文档和资料就有了这篇文章。
收窄方式
在具体讲解上面如何实现之前,...
nginx 极简入门
nginx(读音:engine-x,音标:[ˈendʒɪnks'])是 HTTP 和反向代理服务器、邮件代理服务器和通用 TCP/UDP 代理服务器。
日常中最经常听到用到的就是反向代理以及负载均衡,那么什么是反向代理呢?
什么是反向代理?
反向代理(Reverse Proxy)是指以代理服...
.gitattributes 正确使用姿势
这篇文章的由来是因为项目上的一个神奇问题,之前觉得写重复的创建项目太繁琐就封装了一个创建模板文件 CLI ,当时心想自己真是一个上进的小伙子。
后来某天 xx 领导对我说有一个新项目交给我做,当时心想终于可以大展拳脚试试新的工具了,一顿操作后项目完成了,不过在推送 GitLab 时发现图片竟然...
yarn.lock 引发的血案
最近开发项目的时候遇到一个神奇的 bug,在回滚了无数次之后终于定位到了问题,就是 yarn.lock 引起的,当时升级相关依赖版本不小心把 yanr.lock 文件给干掉了,导致依赖引用的模块有问题。
不过这也引起了我的思考为什么 yarn 要有一个 yarn.lock 文件呢?或者说为什么...