Electron 实现文件关联

酷家乐客户端最近需要实现文件关联,把 CAD 文件关联到应用上,双击文件可以直接打开应用进行 CAD 预览。 文件关联与操作系统相关性比较大,不同的操作系统实现方式也会不同。不过如果使用 electron-builder 进行应用打包,可以直接通过 fileAssociations 配置来实现文件关联。 而这边使用 electron-packager 打包,不会直接产出安装程序,所以需要自行实现文件关联,同时可以借机进一步了解 Windows 和 Mac 实现文件关联的细节。 文件关联 文件关联的实现和表现在不同的操作系统上会有所不同,但核心期望是一致的: 应用安装完成后,特定的文件类型会自动关联到应用上,文件图标需要根据配置有所变化 双击能够直接通过目标应用打开;或者右键在其他应用中能够选择目标应用

输入法与 keydown 事件

输入、回车提交,这是一组在搜索场景中常见、友好的交互形式,但要将其做好以获得更好的用户体验,还需要关注其中的小小细节。 监听回车 所谓的细节就是关于“回车”的监听。因为输入法的存在,引入了文本合成现象,使得字符输入变得不再纯粹简单。 若处理不当,就会出现在开着输入法的情况下,当只想使用回车输入字符时,却触发了提交动作。 就像这样(我想搜的可能是 “red 主题”): 大胆猜想一下,上面输入框的实现可能是这样的: input.addEventListener('keydown', (e) => { if (e.code !== 'Enter') return;

跨平台 Hooks npm 包的接口设计

一、Overview Taro 是用 React 的方式来写小程序,拥有与 React 一致的 api,因此可通过相同的实现来同时满足多端的需求。现在正在构建一个可跨端使用的 Hooks 包,关键的问题在于如何处理包的依赖。 当在小程序中使用时,实际上是依赖了  @tarojs/taro,而在 web 中使用时需要依赖 React: // cross-use(Hooks 包的包名) function useMyHook() { return useState(); } // 业务方使用时 import { useMyHook

基于 React Hooks 的小型状态管理

本文主要介绍一种基于 React Hooks 的状态共享方案,介绍其实现,并总结一下使用感受,目的是在状态管理方面提供多一种选择方式。 实现基于 React Hooks 的状态共享 React 组件间的状态共享,是一个老生常谈的问题,也有很多解决方案,例如 Redux、MobX 等。这些方案很专业,也经历了时间的考验,但私以为他们不太适合一些不算复杂的项目,反而会引入一些额外的复杂度。 实际上很多时候,我不想定义 mutation 和 action、我不想套一层 context,更不想写 connect 和

Git Subtree 的使用

git 的 subtree 是一种复用源代码的方式,可以让多个仓库引用某个仓库的代码,也可以将仓库中的某个目录拆分成一个子仓库以供其他仓库使用。 相较于 git 的 submodule,目前社区中多更推崇 subtree,自己在使用了一段时间后总体也是认为 subtree 会更好用一些。 但同时,两者都有各自的一些问题,而 subtree 的问题目前有其他方式规避,整体用起来比较流畅,所以最终选择了 subtree。 实际上 subtree 命令需要在某个版本的 git 之后才被支持,但目前 git 的常用版本是完全足够的,所以也没去深究过。 为什么?

前端

node_modules 与包管理器

身为前端开发的我们应该每天都会接触 node_modules,但对于 node_modules 的认知是否充分?也许因为包管理器的存在,平时只需要一个 install 命令,可能就不会去过多关注 node_mdouels 本身。 简单而言,node_modules 是为 Node 设计存放依赖的文件夹。一直到今天,node_modules 能满足很多场景的使用,但同时也存在不少缺陷。 从一个常见的版本冲突场景开始切入主题,查看以下依赖关系: 当出现这种情况时,node_modules 下的文件结构是如何组织的? 如果