Feathers.js 实时 Channel 与事件推送入门
Feathers.js 在 2021 年让我觉得很有意思的一点,是它不是把实时能力当成“额外插件”,而是直接把 service 事件当成天然的推送源。
Feathers.js 在 2021 年让我觉得很有意思的一点,是它不是把实时能力当成“额外插件”,而是直接把 service 事件当成天然的推送源。
Go 里的方法接收者,看起来是一个很小的语法点,但一旦项目写久了,你会发现它会直接影响代码语义。很多人会背口诀:能不用指针就不用指针,或者一旦要改值就用指针。可真正到工程里,光背口诀还是不够。
写前端小插件最容易带来的错觉,就是“东西很小,怎么写都行”。尤其做分享按钮、浮层、复制链接这类轻量功能时,很多实现一开始都很快:挂几个全局变量、塞一段样式、暴露一个初始化函数,页面立刻就能用。
VSCode 真正用顺以后,很多人都会开始调设置。问题也从这里开始:个人用户设置越积越多,项目工作区设置也越来越重,到了某个节点,大家会发现格式化、补全、保存动作、插件行为全在互相覆盖,谁说了算都不清楚。
表面上看,CommonJS 迁移到 ES Module 很像一次语法替换:require 换成 import,module.exports 换成 export。可 2019 年前后我自己在项目里碰这件事时,真正拖慢进度的从来不是语法本身,而是模块边界和运行上下文没先想明白。
VSCode 用久了之后,配置文件很容易变成一个巨大的杂物箱。今天装一个插件改一条设置,明天为了某个语言服务再补两条,过几个月回头看,自己都说不清哪些是个人习惯,哪些是项目要求,哪些只是某次临时实验留下来的痕迹。
学 Java 时,很多人第一次接触不可变对象,都会很快记住 final 这个关键字。于是项目里就容易出现一种误会:只要字段加了 final,对象似乎就安全、稳定、不会被改坏了。可真正写一阵业务之后你会发现,事情没这么简单。
Java 集合遍历删除这个问题,很多人都知道有坑。
可真正麻烦的地方在于,它不是每次都立刻用最醒目的方式出错。有些代码在某个数据量、某种路径下能跑,看起来像是可用的,结果一换场景就开始报错或者漏删,这种“看起来能跑”的状态反而最危险。
用 glob 做批处理时,大家通常会先想“我该怎么把目标文件匹配出来”。
可 2017 年我自己写这类脚本越来越多之后,反而最警惕另外一件事:是不是把不该处理的生成目录也一起扫进来了。
第一次在 Node.js 脚本里用 glob,会有一种很爽的感觉:以前得自己递归目录、判断后缀,现在一条模式就能把文件找出来。可真把它用进构建脚本、批处理脚本、资源扫描脚本以后,就会发现路径这件事比模式本身更容易出问题。