你在 Obsidian 里看到的 Dataview 和 DataviewJS,是同一个插件的两种查询语法,核心差别是:一个是简易查询语言(DSL),一个是原生 JavaScript(全能编程)。
我用最直白、好理解的方式给你讲清楚👇
一、核心区别一句话总结
- Dataview(普通查询):类 SQL 简易语法,不用写代码,几分钟就能学会,满足 80% 日常需求。
- DataviewJS:JavaScript 代码,功能无上限,能做复杂逻辑、自定义样式、循环、判断、调用插件等。
二、详细对比(最关键)
| 特性 | Dataview (普通版) | DataviewJS (JS版) |
|---|---|---|
| 学习难度 | 极低(类似表格筛选) | 高(需要会 JS) |
| 书写速度 | 极快 | 慢,代码量大 |
| 功能上限 | 中等(只能查询/列表/表格) | 无限(可做任何交互、样式、计算) |
| 可读性 | 极高,一目了然 | 低,非程序员看不懂 |
| 稳定性 | 高,官方维护 | 高,但代码写错会报错 |
| 适用人群 | 所有 Obsidian 用户 | 会一点 JS / 有复杂需求的人 |
三、语法长什么样?(直观感受)
1. Dataview(普通查询)
TABLE file.ctime AS 创建时间, tags AS 标签
FROM #笔记
SORT file.mtime DESC
LIMIT 10
不用写代码,像说话一样写指令。
2. DataviewJS
const pages = dv.pages('#笔记').sort(p => p.file.mtime, 'desc').limit(10);
dv.table(["文件名", "创建时间", "标签"],
pages.map(p => [p.file.name, p.file.ctime, p.tags])
);
这是 JavaScript,能写判断、循环、计算、自定义样式。
四、什么时候用 Dataview(普通版)?
90% 的日常场景都用它!
适合:
- 列出某个标签的所有笔记
- 显示最近修改/创建的文件
- 做简单表格:文件名、创建时间、标签、状态
- 统计数量、分组
- 按文件夹查询
只要是「查询 + 展示」,优先用 Dataview。
五、什么时候必须用 DataviewJS?
当普通版做不到时,才用 JS 版:
适合:
- 复杂计算(日期差、统计、公式)
- 自定义样式(颜色、图标、进度条、卡片视图)
- 条件判断(if / else 展示不同内容)
- 循环遍历(多层数据处理)
- 调用其他插件(如 Tasks、Calendar)
- 动态生成内容(根据内容自动生成文字)
- 高度定制化表格
简单说: 普通版做不到 → 用 DataviewJS
六、超简单选择指南(直接照抄)
✅ 用 Dataview(普通)
- 我要列文件
- 我要表格展示
- 我不想学代码
- 我要简单、稳定、快
✅ 用 DataviewJS
- 普通查询实现不了我的效果
- 我需要自定义颜色/样式
- 我需要做计算、判断、循环
- 我会一点 JS / 愿意复制代码改一改
七、给你的最终建议
- 先学 Dataview 普通版,足够满足笔记管理、知识库、任务管理。
- 遇到复杂需求再复制 DataviewJS 代码修改,不用从头学 JS。
- 不要一上来就用 JS,会把笔记库搞复杂、容易报错。
总结
- Dataview = 简单查询、无代码、日常必备
- DataviewJS = 全能编程、复杂功能、高阶玩法
- 先普通,不够用再上 JS
张芷铭的个人博客
Comments