由于 notion 的习惯使然,或者还有更前的一些笔记习惯,我习惯会为文档增加标签。
在长期的 notion 使用中,我基于 database 添加了“标签”属性,通过这种方式搜索文档
而在 siyuan 中,内置了标签。这就让我很纠结了:
- 选择扩展属性,那么放弃了系统内置功能,会不会有性能劣势或者其他的没有享受到的东西?
- 使用后者,那我使用数据库副本就少了一个辅助过滤的能力,或者至少实现没有那么简单
你们呢?怎么选择
由于 notion 的习惯使然,或者还有更前的一些笔记习惯,我习惯会为文档增加标签。
在长期的 notion 使用中,我基于 database 添加了“标签”属性,通过这种方式搜索文档
而在 siyuan 中,内置了标签。这就让我很纠结了:
你们呢?怎么选择
思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。
融合块、大纲和双向链接,重构你的思维。
要不试试模板列?
假如你现在有一个包含两个标签的文档:
加入数据库后,使用模板列,输入以下代码:
.action{$tags := splitList "," .tags}
.action{range $index, $tag := $tags}
<span style="padding: 1px 6px 1px 6px; background-color: var(--b3-font-background13); border-radius: 3px;"># .action{$tag}</span>
.action{end}
能够得到这样的效果:
这样做,可以保留你原有的习惯,数据库也有了你说的“辅助过滤的能力”(通过筛选、搜索等),还不需要额外的成本(不需要再维护一个多选列)。不足之处是不能直接在数据库列上修改标签,要回到文档去。
第一条,多虑了,因为思源的数据库表格才加上没多久,用表格比标签舒服多了
标签用来放一些存档的东西,其实挺好的,不用常出现,但是一直在
@liptshang 有点赞,看了一下源码找了一下 .tags 怎么注入的,还可以把模板列的渲染改为 select 组件,监听 onchange,或者看能不能复用 siyuan 的组件(如果有/可以的话)。另外不知道是不是这个模板列的问题,点击 Cell 的时候,会重新渲染成模板列的代码 input...
点击模板列的效果和文本列一样,都是展示 cell 的 textarea。不过,如果 cell 里面有可点击的元素的话,是可以点击的。比如,前面模板代码里的标签样式,是我即时写的,只是纯文本加了背景色,点击就是 textarea;其实,可以改为标签的原生样式,点击里面的标签,就可以唤起标签的搜索 tab 了:
.action{$tags := splitList "," .tags}
.action{range $index, $tag := $tags}
<span data-type="tag">.action{$tag}</span>
.action{end}
模板列里也可以执行 js 代码,扒扒源码应该可以实现你的这个想法?不过我个人感觉还是由官方新增一个专门的标签列会比较好。
还是等子弹飞一会吧,感觉 database 这块还有很多优化空间,模板更是。按着 notion 的路子来走,起码得大半年不止。
notion 用起来很符合直觉的 database 功能:
目前感觉精力仅集中两个视图 table 和 看板 的实现就现阶段够用了,后面直接做这块的优化,不要只停在够用的程度了
回到主题,目前我还是决定继续在 database 上添加标签多选列,这样使用体验和维护都比较方便,内置标签系统仅作为补充好了,在内容上做下名词索引够用了,同时用于碎片化的内容片段,方便之后整理为文档。或者继续看看 DL 们还有什么骚操作了
@liptshang 在 v3.0.11 要先过滤掉空值,否则会报错
.action{ if not (empty .tags) }
.action{ $tags := splitList "," .tags }
.action{ range $index, $tag := $tags }
<span style="padding: 1px 6px 1px 6px; background-color: var(--b3-font-background12); border-radius: 3px;"># .action{$tag}</span>
.action{ end }
.action{ end }
.action{ if not (empty .tags) }
.action{ $tags := splitList "," .tags }
.action{ range $index, $tag := $tags }
<span data-type="tag">.action{$tag}</span>
.action{ end }
.action{ end }
安全永远都不是一个小问题。
Telegram 是一个非盈利性、基于云端的即时消息服务。它提供了支持各大操作系统平台的开源的客户端,也提供了很多强大的 APIs 给开发者创建自己的客户端和机器人。
百度(Nasdaq:BIDU)是全球最大的中文搜索引擎、最大的中文网站。2000 年 1 月由李彦宏创立于北京中关村,致力于向人们提供“简单,可依赖”的信息获取方式。“百度”二字源于中国宋朝词人辛弃疾的《青玉案·元夕》词句“众里寻他千百度”,象征着百度对中文信息检索技术的执著追求。
Git 是 Linux Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
深圳市大疆创新科技有限公司(DJI-Innovations,简称 DJI),成立于 2006 年,是全球领先的无人飞行器控制系统及无人机解决方案的研发和生产商,客户遍布全球 100 多个国家。通过持续的创新,大疆致力于为无人机工业、行业用户以及专业航拍应用提供性能最强、体验最佳的革命性智能飞控产品和解决方案。
GitLab 是利用 Ruby 一个开源的版本管理系统,实现一个自托管的 Git 项目仓库,可通过 Web 界面操作公开或私有项目。
Notion - The all-in-one workspace for your notes, tasks, wikis, and databases.
宋真宗赵恒曾经说过:“书中自有黄金屋,书中自有颜如玉。”
IDEA 全称 IntelliJ IDEA,是一款 Java 语言开发的集成环境,在业界被公认为最好的 Java 开发工具之一。IDEA 是 JetBrains 公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。
为成为自由职业者在家办公而努力吧!
小说是以刻画人物形象为中心,通过完整的故事情节和环境描写来反映社会生活的文学体裁。
Bug 本意是指臭虫、缺陷、损坏、犯贫、窃听器、小虫等。现在人们把在程序中一些缺陷或问题统称为 bug(漏洞)。
Kafka 是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是现代系统中许多功能的基础。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。
OkHttp 是一款 HTTP & HTTP/2 客户端库,专为 Android 和 Java 应用打造。
JetBrains 是一家捷克的软件开发公司,该公司位于捷克的布拉格,并在俄国的圣彼得堡及美国麻州波士顿都设有办公室,该公司最为人所熟知的产品是 Java 编程语言开发撰写时所用的集成开发环境:IntelliJ IDEA。
Google App Engine(GAE)是 Google 管理的数据中心中用于 WEB 应用程序的开发和托管的平台。2008 年 4 月 发布第一个测试版本。目前支持 Python、Java 和 Go 开发部署。全球已有数十万的开发者在其上开发了众多的应用。
TensorFlow 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。
CentOS(Community Enterprise Operating System)是 Linux 发行版之一,它是来自于 Red Hat Enterprise Linux 依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定的服务器以 CentOS 替代商业版的 Red Hat Enterprise Linux 使用。两者的不同在于 CentOS 并不包含封闭源代码软件。
一种软件架构设计风格而不是标准,提供了一组设计原则和约束条件,主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。
确认过眼神后的灵魂连接,站在链在!
上帝为你关上了一扇门,然后就去睡觉了....努力不一定能成功,但不努力一定很轻松 (° ー °〃)
Web Clipper 是一款浏览器剪藏扩展,它可以帮助你把网页内容剪藏到本地。
JavaScript 一种动态类型、弱类型、基于原型的直译式脚本语言,内置支持类型。它的解释器被称为 JavaScript 引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在 HTML 网页上使用,用来给 HTML 网页增加动态功能。
HTML5 是 HTML 下一个的主要修订版本,现在仍处于发展阶段。广义论及 HTML5 时,实际指的是包括 HTML、CSS 和 JavaScript 在内的一套技术组合。
GraphQL 是一个用于 API 的查询语言,是一个使用基于类型系统来执行查询的服务端运行时(类型系统由你的数据定义)。GraphQL 并没有和任何特定数据库或者存储引擎绑定,而是依靠你现有的代码和数据支撑。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于