Obsidian 插件篇 -DataviewJS 基础知识
来源
- 触发点:
dataview模式不足以应对需求,继续学习dataviewjs - 首次记录:2025-03-08
- 作者:huan
洞见
学习DataviewJS基础知识,便于后面进行脚本测试编写。原文地址:Obsidian插件篇-DataviewJS基础知识。
详情
📌 提示:本文中的所有代码块均使用
javascript作为语言标识,以避免本地自动执行。若要在你的 Obsidian 中运行,请将代码块的标识从```js改为```dataviewjs。
检索页面
dv.pages()用于根据标签、路径或查询条件获取一组页面对象;
dv.pages("#books") //返回所有带有标签 books 的页面
dv.pages('"folder"') //返回所有在 folder 文件夹的页面
dv.pages("#yes or -#no") //返回所有带有标签 yes 或者没有标签 no 的页面
dv.pages("") //返回所有页面dv.pagePaths()则只返回这些页面的路径;
dv.pagePaths("#books") //返回所有带有标签 books 的页面路径
dv.pagePaths('"folder"') //返回所有在 folder 文件夹的页面路径
dv.pagePaths("#yes or -#no") //返回所有带有标签 yes 或者没有标签 no 的页面路径dv.page()用于获取单个页面。
dv.page("Index") //返回名称为 Index 的页面渲染内容
DataviewJS 提供了简单的渲染函数,用于在笔记中动态生成标题或段落。
dv.header(level, text)渲染指定层级的标题(1~6),其中 level 为层级,text 为文本。
dv.header(2, "这是二级标题")dv.paragraph(text)用于渲染为段落,你可以理解成普通文本。
dv.paragraph("这是一段普通文本。"生成列表
使用 dv.list() 可将数组或页面字段渲染为 Markdown 列表。
dv.list([1, 2, 3]) //生成一个1,2,3的列表
dv.list(dv.pages().file.name) //生成所有文件的文件名列表
dv.list(dv.pages().file.link) //生成所有文件的文件链接列表,即双链
dv.list(dv.pages("").file.tags.distinct()) //生成所有标签的列表
dv.list(dv.pages("#book").where(p => p.rating > 7)) //生成在标签 book 内所有评分大于 7 的书本列表任务列表
dv.taskList(tasks, groupByFile) 用于渲染任务(待办事项),当 groupByFile 为 True 或者 1 的时候,会按照文件名分组。
// 获取4.Apply文件夹下所有未完成任务
dv.taskList(dv.pages('"4.Apply"').file.tasks.where(t => !t.completed))
// 显示所有 project 标签页面中的未完成任务
dv.taskList(dv.pages("#project").file.tasks.where(t => !t.completed))
// 显示 project 标签页面中包含 #tag 文本的任务
dv.taskList(dv.pages("#project").file.tasks.where(t => t.text.includes("#tag")))
// 显示所有包含 `exam` 且未完成的任务,并按文件分组(`groupByFile = 1`)
dv.taskList(
dv.pages("").file.tasks
.where(t => t.text.includes("exam") && !t.completed),1)生成表格
使用 dv.table(headers, rows) 可创建结构化表格,headers 为表头数组,rows 为每行数据的数组。
- 展示所有
#Obsidian标签页面的标题与自定义id字段:
dv.table(
["Title", "id"],
dv.pages("#Obsidian").map(b => [b.file.link, b.id])
)- 按评分排序,展示
#book页面的书名、类型、阅读时间和评分:
dv.table(
["File", "Genre", "Time Read", "Rating"],
dv.pages("#book")
.sort(b => b.rating)
.map(b => [b.file.link, b.genre, b["time-read"], b.rating])
)演化日志
- v0.1 (2025-02-17):初始版本完成
- v0.2 (2025-03-08):完善示例
- v0.3 (2025-10-25):补充来源、洞见、演化日志,完善笔记结构;
- v0.4 (2025-10-25):重构详情,更易于阅读