张芷铭的个人博客

你在 Obsidian 里看到的 DataviewDataviewJS,是同一个插件的两种查询语法,核心差别是:一个是简易查询语言(DSL),一个是原生 JavaScript(全能编程)

我用最直白、好理解的方式给你讲清楚👇


一、核心区别一句话总结

  • Dataview(普通查询)类 SQL 简易语法,不用写代码,几分钟就能学会,满足 80% 日常需求。
  • DataviewJSJavaScript 代码,功能无上限,能做复杂逻辑、自定义样式、循环、判断、调用插件等。

二、详细对比(最关键)

特性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 / 愿意复制代码改一改

七、给你的最终建议

  1. 先学 Dataview 普通版,足够满足笔记管理、知识库、任务管理。
  2. 遇到复杂需求再复制 DataviewJS 代码修改,不用从头学 JS。
  3. 不要一上来就用 JS,会把笔记库搞复杂、容易报错。

总结

  • Dataview = 简单查询、无代码、日常必备
  • DataviewJS = 全能编程、复杂功能、高阶玩法
  • 先普通,不够用再上 JS

Comments