编写兼容 nodejs/浏览器的库 问题兼容问题是由于使用了平台特定的功能导致,会导致下面几种情况 不同的模块化规范:rollup 打包时指定 平台限定的代码:例如包含不同平台的适配代码 平台限定的依赖:例如在 nodejs 需要填充 fetch/FormData 平台限定的类型定义:例如浏览器中的 Blob 和 nodejs 中的 Buffer 不同的模块化规范这是很常见的一件事,现在就已经有包括 cjs/amd/iife/u
基于 nodejs 的热更新 http 开发服务器 场景之前一直在使用 http-server 作为本地快速启动静态 http 服务器的命令行工具,然而直到今天,吾辈实在难以忍受其在修改完 HTML 文件后,http-server 不会自动刷新浏览器重新渲染页面,而是需要手动刷新才行,真的是不厌其烦,所以吾辈开始找更好的工具。 注:http-server 其实也已经热更新到内存中了,只不过不会触发浏览器刷新页面。 期望 零配置使用 修改文件
使用 jscodeshift 做重构 场景最近迁移了一些 API,因为所有前端项目都在同一个 monorepo 中,所以作为 lib 维护者吾辈还需要帮助迁移其他使用的模块。由于项目数量较多(大约有 30 多个),手动迁移非常麻烦而且难以测试。所以在调研了一些现有的大规模重构的方法后,吾辈选择了 jscodeshift 作为主要工具来做自动化迁移。那么,它相比于使用 ide 的重构功能、使用字符串搜索替换亦或是手工一个个替换有什么不同
新视点 这周请了 5 天的年假,回去了一趟老家,虽然很多事物没有什么变化,但认知世界的眼睛发生了变化,便看到了一些不曾留意过的东西。 そら 用树叶吹出来的声音,和吾辈想象中的差别有一点点大 ಡ ͜ ʖ ಡ 声音: https://1drv.ms/u/s!AqTwKbfzs-vyiocZXo9hbDbp7h7P2g 魔幻现实,退林返耕(小时候玩的空地前几年被挖了个大坑(卖地),现在居然种上农作物
立个 Flag,今年入坑 Kigurumi 并出一次漫展 简介 Kigurumi 是什么?能吃么? 是一种 cosplay 服装扮演,不能吃谢谢。 借用 Wiki 中的描述:“人偶扮演(着ぐるみ Kigurumi ?),是一种透过穿着类似 吉祥物服装的全身套装以在现实世界中达成还原卡通或动漫人物的 cosplay 形式。和 cosplay 不一样的是,表演者的脸会被 面具完整的包住,所穿着的服装也会掩盖住全身,借此表演者得以完全隐藏自己原本的身份,完全
汉诺塔问题 前言最近两个月一直在看 SICP 的 Youtube 课程,作为一个半路出家的人,自觉基础欠缺,至今已是工作的第四个年头,正如年初计划所言,仅仅依赖于热情去折腾各种简单的玩具已经不再能有效地提升自己了,需要系统化的学习和组织知识。虽然之前也买过实体书,但由于看起来比较难而且也没有风趣的讲解(看的有点枯燥,看完视频后感觉里面的教授真的太有趣了!),所以一直没能看下去(另外一本《算法》也是同样的命运)
2022 新春团建 这是自从来到帝都入职新公司之后,第一次出来一起团建,总体上感觉还是很有趣的。 首先,上午一起先去种了树,毕竟临近植树节了嘛 但实际上在我们走了之后就被拔了,种了拔拔了种,我们(公司和景点)都赢了,只有树苗默默被消耗着。。。 由于是下午到的酒店,所以爬不了长城,只能随便逛逛,这个时候人非常少,冷冷清清的,据说秋天人会很多。 然后就看到有个塔,所以就一起和同事爬了上去(看到很高的东西想上去不是很
Git 设置和取消代理 设置代理12git config --global http.proxy 'http://127.0.0.1:10800'git config --global https.proxy 'http://127.0.0.1:10800' 注:此处设置的代理 ip 和端口号都是本地存在的(SS/SSR 默认就是)。 取消代理12git config --global --unset http.p
工具网站 前端 2019 前端开发者学习路线汇总 工具 i18ns: 国际化 i18n 全语言翻译 codepen: 前端页面代码分享(HTML/CSS/JavaScript) appsgeyser: 封装前端/网站为 App cloudflare: CDN/免费的 HTTPS netlify: 前端免费 CI(持续集成) smms: 免费稳定的图床(国内) office-converter: 文档在线转
实现一个玩具 lisp 运行时与解析器 前言之前看元循环求值器一节中使用 lisp 实现了一个 lisp 的运行时,吾辈也尝试使用 ts 来实现它。首先,这里展示一张曾经在书中出现过的图,表示一个运行时的基本组成是由 eval 和 apply 组成(看起来很像太极就是了)。eval 负责执行一个表达式,在 lisp 中,所有的代码都是表达式,这没什么问题。apply 则负责执行一个函数,将计算实参列表,并创建一个新的闭包环境绑定到形参上
流与延迟计算 前言在此之前,吾辈介绍了如何 从函数中无中生有的构造数据结构。现在,吾辈将使用它构造一个更强大的数据结构:Stream(流)。 或许你曾经见过这张图 一些数据经过一系列的处理,然后得到结果,而只需要迭代每个元素一次,就像魔法一样。 之前的想法最初,吾辈的想法是让操作保存起来,只有等待某个显式调用的时候才真正执行。 即调用 map/filter/reduce 时将 action 与参数保存起来,等
cons: 无中生有的数据结构 前言lisp 中有一种有趣的数据结构,Cons,它使用函数闭包封装了一个两元组的数据结构,并在此之上构建出其他需要的任何数据结构。在此之前,虽然也知道闭包之类的概念,写过一些高阶函数,但并未想过可以使用函数来构建数据结构,下面吾辈会说明如何在 ts 完成。 lisp cons 的 wiki 基本定义如下 $$c=cons(a,b)\car(c)=a\cdr(c)=b$$ 初始实现cons 初始