Obsidian
Obsidian - Sharpen your thinking是一款很强大的笔记软件。 它的 强大 之一就在于有着丰富的第三方插件系统。
本文要介绍的是 Obsidian 的一个重量级插件,名为 Dataview
你可以通过 Obsidian 自带的社区插件市场中安装。
Dataview
消歧义 需要注意的一个是对于前端开发者而言,你可能认为的 Dataview 是 DataView - JavaScript | MDN。这和 Obsidian-dataview 无关,本文为了简洁,下文中所说的 dataview 都是指 obsidian-dataview
Dataview 是一个用来索引和查询你的 vault 中的 md 文件的插件。它提供了两种强大的语法支持,一种称为 DQL
(Dataview Query Language),是一种类似与 SQL 的语言。除此之外还支持 JavaScript 语法。
DQL
DQL 四种类型
- Table
- List
- Task
- Calendar
分别生成不同的片段 一个最简单的DQL应当如下
|
|
除此之外还包括 sort
用于排序, group by
用于分组。
例如我要做一张表格,用来筛选我的电影目录中没有看过的电影,按照创建时间升序
我的目录是这样的:
|
|
那么可以这样写
|
|
JS
Dataview 实际上实现了如下的一个 API Overview - Dataview
|
|
具体的接口函数,可以查询 Codeblock Reference - Dataview 这里列举几个常用的
dv.el(element, text)
用来渲染一个标签,例如dv.el("span", "some text")
就会被渲染为一个span- 还可以使用简洁的方式
dv.span("some text")
dv.pages(source)
用来引入文件
使用技巧
使用 Dataviewjs 进行网络请求
dataviewjs 是可以进行异步 IO 和网络请求的。
|
|
调用 Obsidian API 和其他插件
Dataviewjs 环境中可以调用其他其他插件,实现其他功能。 参考 HTML elements - Developer Documentation 调用 API 例如渲染一个progress:
|
|
this.container
获取到的是当前这个代码块的对象,类型是一个 HTMLDOM
对它可以进行 Obsidian 的 API createEl
createEl 需要注意的是第二个参数接受一个对象,
这个对象有三个属性:
text
表示标签中的内容cls
表示标签的class attrattr
是一个 object,里面写其他的自定义属性。 参考 官方文档: HTML elements - Developer DocumentationGitHub - chhoumann/MetaEdit: MetaEdit for Obsidian 可以对 frontmatter 进行操作