分类: 随笔

  • 修改 WordPress 主题默认字体

    我很喜欢 WordPress 2022 主题的设计,但是这款主题默认使用的是衬线字体,我看着很不舒服,经过断断续续的折腾,终于把找到了最合适的方法来修改这款主题的默认字体。

    TL;DR

    在不使用第三方插件的前提下,为了让主题的修改在展示页面跟编辑页面同时生效,必须要借助主题文件编辑器。打开编辑器,选中 WordPress 2022 主题,在右边找到 theme.json

    Theme File Editor in Menu
    theme.json

    接着将文件中所有的 var(--wp--preset--font-family--source-serif-pro) 替换为 var(--wp-preset--font-family--system-font) 即可。system-font 默认使用的就是用户操作系统的非衬线字体。

    为什么不用自定义 CSS?自定义 CSS 需要同时覆盖展示页面跟管理页面的样式,而且还需要针对不同的 Block 单独编写样式,太麻烦了,直接编辑主题文件可以在所有看得到的地方起效。

  • 吐槽一下 Testing Library / Jest

    有点鸡肋的 Query API

    Testing Library 推荐使用 queryByRole、queryByText 这类 API,因为这类 API 更加符合用户视角,相较于 DOM 结构更加稳定。但是这些 API 存在一个非常恼人的限制,不能让我自由自在地编写稳定的测试代码,例如:

    <button>
      <div>Option 1</div>
    <button>
    <span>Option 1</span>

    如果我想要点击上面例子中的按钮,就必须得先用 findAllByText 找出所有的内容为「Option 1」的元素,然后再用 DOM 属性筛选出「按钮」。Testing Library 甚至还有一个 eslint 规则禁止使用 DOM 属性

    同样的需求在 Playwright 中的查询语法就非常简单:button:has-text(Option 1)

    没法在真实浏览器上运行

    Jest 几乎不再推荐使用真实浏览器来执行测试,所有的类真实浏览器环境 test-runner 都不再有官方的支持。这时我就非常怀念 Angular 提供的 Jasmine 测试框架,可以选择使用真实浏览器执行,完全不用像使用 JSDOM 一样需要顾虑是否用到了一些有限制的 API。

    也是因为 JSDOM 的原因,一些在真实浏览器上工作正常的代码很容易在 JSDOM 上翻车,如果你比较注重用户体验,想要整一些酷炫的动画或者类似 Drag、Hover 等交互操作,那么 JSDOM 可以让你的复杂交互逻辑反复翻车。

    替代方案 playwright

    Playwright 是近来非常流行的 e2e 测试框架,它使用魔改版的浏览器来执行测试,在 playwright 中我们几乎可以实现任何真实的用户操作,甚至是多开标签页。借助 playwright-ct,组件的单元测试也可以使用 playwright 编写。

  • Hello World

    我叒换博客平台了。

    我的博客之路是从博客园开始的,最早的一篇文章发表于 2015 年 7 月,那时刚刚高考结束,离大学开学还有不到两个月。现在的我只能从文章的标题来推测当时写博客的动机——应该是为了学习记录。就这么断断续续的记录了大概四年,持续到大学毕业,找到了人生中的第一份工作——博客园后端开发。

    虽然入职了一个开发博客平台的公司,但是写博客慢慢变少了,更多的是用来测试博客后台功能正确性的文章。也差不多是刚入职的这个时间,我写出了我的个人博客软件。这个项目是博客园的笔试题,但是笔试结束后我并没有把它丢到一旁,在上班的空余时间,慢慢地给它提交代码,一点点的丰富功能。直到我换两份工作,我的个人博客都是记录在自己的这个网站上的。

    在这个网站上,我实现了一些有意思的功能,比如「服务端高亮代码」、「服务端渲染数学公式」。不过这些小成就并没能继续推动我写博客,在这期间的博客很多都是在繁忙工作的喘息中写下来的。除了需要写博客之外,还得继续维护博客平台本身——服务商跑路了,想办法恢复数据,迁移博客;dotnet 更新了,得升级项目;不支持 RSS,得自己实现 RSS 功能,诸如此类。这些事务也像写博客一样,抢占着我的休息时间。让我的博客更新看起来就像便秘一样。

    同样也是这段时间,我也变得越来越沉默,不想在社交网络上发言,不再往感兴趣的论坛灌水,不再打开群组闲聊。闭而不言让我感到舒适,我不用思考该如何讲话,我只需要接收我喜欢的信息就好。但是最近我也发现了长久沉默带来的副作用——一旦看文字信息,就只想快速的扫视,马上了解大致内容,就像是大脑被训练出来了快速阅读的「肌肉记忆」。我想大概是我的大脑已经习惯了长时间开启的「只读」模式,针对这种情况进行了 JIT 优化吧。

    现在回想起来这种情况已经出现了很久,大概得有四五年了,但真正意识到这个问题却是在去年全职远程之后。全职远程在家,每天能够说话的人就更少了,连着十几个小时不说一句话可能并不夸张。不过一到线上会议,我总是能够感觉到自己已经不太会说话了,这让我感到了一丝不妙。会不会真的有某一天我完全丧失了口头交流的能力呢?

    不知道哪天,一个观点进入了我的脑子:无法向外输出内容,是因为没有经过自己的思考将输入的信息融会贯通。大部分常用的信息表达方式都是线性的,例如聊天工具中的一段对话、网站评论区的一段留言、博客里面的一篇文章,不管篇幅如何,其中蕴含的观点与知识都是文字这样线性的方式传递的。而知识在思维之中却是以复杂精巧的网状结构存在的,想要通过文字传递原创的、有价值的信息,就得先将输入的信息反序列化成自己知识脉络的一部分,然后再通过合适的技巧将自己的知识序列化成线性的结构通过文字表达出来。

    从这个角度来看的话,我遇到的问题其实是「看的太多,想的太少」。就像是 Epic 免费送的游戏一样,虽然可以很容易的加入到自己游戏库中,但是从来不会去玩,更不要说体验游戏的乐趣了「所谓的电子阳痿」。写作则是我准备进行的第一个康复训练,让大脑在编辑文字的过程中不断地整理之前输入的信息,不断地推敲文章的论述,不断地构思行文的思路,重新找回脚踏知识大地的坚实感觉。

    如同是游戏开启了新存档准备用全新的职业来攻略一般,我的新博客平台切换到了托管的 WordPress 这样我就不用总是给自己的博客做运维了。虽然并非新年伊始,但这于我个人的数字生活而言算得上是个新的开始,这一次就以每周三篇为目标吧,Hello World!