[javaScript]ES2023 引入非破坏性方法

对于 Array 的一些操作,例如 reverse、sort 等都会改变原数组,ES2023 对以下这些方法进行了拓展,提供了相同功能但是返回新副本的方法。 toReversed toSorted toSpliced with 下面进行一个详细的介绍。 toReversed reverse:反转数组...

使用jsx来编写模板

前言 模板引擎这个应该都不陌生,最早可以追溯到前后端还没分离的时候,后端为了循环、判断值之类简化编写流程而使用的,毕竟手动拼接字符串之类的也太麻烦了。 下面是 php easytpl 的一个示例,从这个可以看到模板引擎的基本用途。 上面这对代码会输出 回到 JavaScript,随着职能的不断提升前...

hook下如何书写发布订阅

这篇文章的思路来源为 ahooks,因为 react 已经有相对应的实现了,所以这里主要介绍 vue 下如何实现一个 hook 的发布订阅。 假设有一个需求,当价格发生改变的时候刷新列表,在 vue 中很自然而然想到调用 watch 观察,但是这样的调用还是有点繁琐。例如下面一段伪代码 但是仔细观察...

monorepo 如何解决别名问题

得益于 pnpm 软链接实现现在 monorepo 项目已经十分成熟了,不过在写项目时候还是遇到很多痛点,例如: 如果我有多个 packages 项目并且使用 TypeScript,那么我肯定希望是写的都是 ts,在需要调用的时候通过工具来完成这一过程的转译,不过在实际开发中可能使用了 vite 这...

TypeScript 类型收窄

TypeScript 类型收窄

image-20220904141910530 写这篇文章是因为最近在写一个管理异步队列的库,但是有一些类型推导不太好写,例如上面的期待是 后面查询了一些文档和资料就有了这篇文章。 收窄方式 在具体讲解上面如何实现之前,先介绍一下几种收窄对象的方式。 typeof 类型守卫 如果在 padLeft ...

nginx 极简入门

nginx(读音:engine-x,音标:\[ˈendʒɪnks'])是 HTTP 和反向代理服务器、邮件代理服务器和通用 TCP/UDP 代理服务器。 日常中最经常听到用到的就是反向代理以及负载均衡,那么什么是反向代理呢? 什么是反向代理? reverse-proxy 反向代理(Reverse P...

nginx 极简入门 - 图片 1
nginx 极简入门 - 图片 2
nginx 极简入门 - 图片 3

.gitattributes 正确使用姿势

这篇文章的由来是因为项目上的一个神奇问题,之前觉得写重复的创建项目太繁琐就封装了一个创建模板文件 CLI ,当时心想自己真是一个上进的小伙子。 后来某天 xx 领导对我说有一个新项目交给我做,当时心想终于可以大展拳脚试试新的工具了,一顿操作后项目完成了,不过在推送 GitLab 时发现图片竟然无法预...

.gitattributes 正确使用姿势 - 图片 1
.gitattributes 正确使用姿势 - 图片 2
.gitattributes 正确使用姿势 - 图片 3
yarn.lock 引发的血案

yarn.lock 引发的血案

最近开发项目的时候遇到一个神奇的 bug,在回滚了无数次之后终于定位到了问题,就是 yarn.lock 引起的,当时升级相关依赖版本不小心把 yanr.lock 文件给干掉了,导致依赖引用的模块有问题。 不过这也引起了我的思考为什么 yarn 要有一个 yarn.lock 文件呢?或者说为什么现代的...

vite 源码解析之 create-vite

home 如题这是一个系列文章不过更新起来可能很缓慢,从 vite 出来之际我就开始关注,目前 npm 的包下载量为 1,589,416+,可以看到已经非常稳定了。而且开发十分香,完全就是开箱即用,下面就来探讨一下 vite 是如何将项目创建到目录中的。 使用方式 目前比较火的管理代码形式为 mon...

vite 源码解析之 create-vite  - 图片 1
vite 源码解析之 create-vite  - 图片 2
使用 TypeScript 来编写 cli 程序

使用 TypeScript 来编写 cli 程序

新的一年已经开始,之前在知乎刷到一篇新年展望贴 2022 前端技术领域会有哪些新的变化?,里面的小伙伴回答了很多,这里稍微归纳一下回答: Monorepo TypeScript ESBuild ESM 化 pnpm ... 上面的回答中 TypeScript 提及的次数很多,原因很是随着项目复杂程度...

漫谈异步函数执行的前世今生

今天简单聊聊异步函数的演变史,不着重讲解语法本身,而是借此窥探一下演变过程,以及是基于什么原因一步步推进。 回调函数 回调函数是最简单处理异步的方式,之所以会有回调函数原因在于 JavaScript 是单线程的语言,如果遇到 io 输入就会阻塞在这里,体验感受较差,为了不影响性能刻意设计。 当然回调...

如何编写爬虫

如何编写爬虫

这是一篇鸽了许久的文章,最近失业在家重构博客的时候发现还有一些文章没有来的及写,就有了这篇文章。 最终代码放到了 codesandbox 准备工作 编写爬虫之前需要调查一下需要爬取的网站是什么形式来渲染的 如果是 spa 页面则只需要拿到账号信息,通常是 token 或者 cookie 之类的,之后...