再谈单元测试
曾写过多篇测试相关的文章,都源于每次测试给我带来的触动,这次也不例外,最近在重构复杂逻辑时,再次感谢它为我保驾护航,同时也发现了历史测试中存在的一些问题。
测试的意义
这是一个认知问题,如果不清楚为何要写测试,那么最终产生的测试大概率是腐烂、或无意义的。
- 保证代码的正确性,提升代码质量是它最高的使命。
- 保证代码的安全性/稳定性,当对某段代码改动后,测试会告诉哪些代码受到了潜在的问题。
- 可以指导写代码的思路,在测试驱动开发(TDD)体现尤为明显。
- 更能透彻的理解代码,很多情况下,写代码时常常会陷入自己的世界,从测试相当于站在旁观者的角度审视代码,从而提升可读性和扩展性。
编辑器系列—如何获取光标/元素位置
编辑器系列—什么是插件
插件(Plugin)是指一种可以增强或扩展已有软件功能的组件或模块。它们通常是以独立的方式编写,可以被动态地添加到主应用程序中,从而提供额外的功能和特性。 —— ChatGPT
个人理解:插件是一个相对的名词,它必须有一个主体容器/应用,其他独立的组件以插入的形式扩展主体容器/应用。
在 Slate 中,插件是一等公民,连编辑器都是以插件的形式创建的,其中编辑器对象扮演着主体容器/应用的角色,提供核心功能,每个插件可以基于 Editor 提供的核心能力去拦截改写或扩展自己的功能/逻辑。
hexo提交代码部署
hexo clean && hexo deploy
Angular 动态创建组件
有两种方式:视图动态渲染和组件动态创建(笔者拟自己拟的概念), 区别是前者的重心是使用 NgComponentOutlet 指令在视图模板中,后者的重心是使用 createComponent API 在组件内创建的 。
js 修改伪类元素的样式
这是一个骚操作…因为目前为止 js 还没有提供可以直接设置伪类的 API,但是程序界流传着这样一句话:任何解决不了的问题都可以引入一个第三方去解决
有一种思路是:
- js 添加自定义 style 属性
- css 中读取并使用该属性的值