世界上最复杂的系统也无非由几个模块和一些规则构成。所以任何软件都可以通过模块+规则来完成。action 就是驱动这类系统的方法。
什么是 Actions ?
PAGENOTE Actions 与 GitHub Actions 几乎等效,开发阶段也参考了GitHub 的实现方式。
如果不了解 GitHub Actions,那么你也许听说过 iOS 的快捷指令(shortcuts)。这两则也有相似之处,即通过一系列的动作命令配置组成一项工作。
这有点像油猴脚本,但却完全不同。油猴脚本需要使用者有软件开发基础,而 Actions,不需要相关专业技能,也可以自定义自己需要的能力。
为什么要做 Actions ?
作为一款笔记、划词、采集的插件,不可避免的会与其他平台通信传输数据。这期间我适配过 Notion、webdav、GitHub、Obsidian,但总结下来:我不可能适配到每一个软件,我需要实现一套统一的解决方案,可以联接任何软件。
我将每一个功能快都拆解为 Action。这是未来 PAGENOTE 开发的一个主导方向。通过下发配置文件,来实现整个插件的运行。
我或许会单独做一款软件,更加完善地实现浏览器版的「快捷指令」(如果你有知道已经有同类型的软件或工具,请及时联系我,我就不再重复造轮子了)。
示例
jobs: - name: "读取变更内容" id: "get_change_list" steps: - name: "或许当前插件内数据" uses: "pagenote/table@v1" id: "getCurrentDataList" with: table: "note" db: "lightpage" method: "keys" params: key: key - name: "本地-> 远程::更新至 obsidian" uses: "pagenote/http@v1" id: 'uploadToObsidian' with: url: ${{env.obsidianHost}}/vault/${{env.obsidian.root}}/${{steps.pkData.outputs.data.key}}.md method: 'PUT' body: ${{steps.exportDataString.outputs}}
通过这样一条指令,可拉取 PAGENOTE 内的笔记数据,然后将其发送至 obsidian。
我正在完全独立的实现这一套运行器代码,这并不简单。有兴趣它如何工作,请看这里。
这种运行机制也可以更加快速的迭代产品、修复bug。不受更新上架周期长的影响。