继续说一个命名的例子。这已经是去年上半年的事了,当时 MathJax 突然准备跑路,搞得大家都措手不及。我们厂见此状况,私下跟他们洽谈无果(包括我们出钱赞助 MathJax),于是只好自己弄了个服务器存放 MathJax,以防以后再出现这种某个著名 JS 库跑路的状况。
问题是,厂里的同事为这一个库单设了一个域名,这个域名下只放这么一个库:
https://mathjax.rstudio.com/latest/MathJax.js
当时我看见连忙上书极力反对这个网址命名法,因为它不符合主流 CDN 资源的网址格式。主流格式都是主网址加库名加版本号,比如:
https://cdnjs.cloudflare.com/ajax/libs/remark/0.14.0/remark.js
如果违反这种主流命名法,那么可能会给别人带来麻烦,比如 Hugo 模板中就不方便做到让用户自定义 MathJax 的 CDN 服务商:
<script src="{{ .Site.Params.MathJaxCDN }}/mathjax/{{ .Site.Params.MathJaxVersion }}/MathJax.js">
</script>
用这样一个网址会好得多:
https://cdn.rstudio.com/mathjax/latest/MathJax.js
这样做还有另外一个好处,就是万一将来又有一个重要的 JS 库跑路的话,我们只需要在我们自己的服务器下增加一个文件夹,把那个库放进来即可。按照当前我们的命名法,如果发生跑路的情况,我们又得再设置一个域名,还得捣鼓一遍域名配置、HTTPS 证书等一屁股琐事。
所以有时候码农之所以忙,纯粹就是因为以前的自己不注重可持续发展、而给现在的自己找的事。我的上书被忽略了,可能大家都觉得这是个芝麻大的事,不值得考虑。单论这事本身的话,它确实是个芝麻大的事,可永远向前多看一步这种思维方式我觉得还是很重要的。只盯着自己的脚趾头走路,难免摔跤、掉坑。
赞赏
作为一名没有固定工作的自由职业者,我非常感谢您通过捐赠的方式来支持我的写作和开源软件开发。当然,捐赠纯属自愿。无论金额多少,都是一片诚挚的心意。支付方式如下:
| 微信 | ← 奋力支开它俩 → | 支付宝 |
|---|---|---|
![]() |
其它爱心通道 ↓ Venmo: @yihui_xie Zelle: xie@yihui.name PayPal: xie@yihui.name |
![]() |
若使用 Venmo/Zelle/Paypal,请添加备注“gift”或“donation”,以免捐赠被视为我的可税收入。若使用 Paypal,支付类型请选 Family and Friends,而不要选 Goods and Services。
在不影响生活的前提下,我会将收到的捐赠以尽量大的比例回馈给开源社区和慈善机构。作为参考,2024-25 年间我共收到约三万美元捐赠,完税后我转手捐出了一万五千美元。

