由于 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 }
Jenkins 是一套开源的持续集成工具。它提供了非常丰富的插件,让构建、部署、自动化集成项目变得简单易用。
TensorFlow 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。
ZeroNet 是一个基于比特币加密技术和 BT 网络技术的去中心化的、开放开源的网络和交流系统。
HTML5 是 HTML 下一个的主要修订版本,现在仍处于发展阶段。广义论及 HTML5 时,实际指的是包括 HTML、CSS 和 JavaScript 在内的一套技术组合。
WebSocket 是 HTML5 中定义的一种新协议,它实现了浏览器与服务器之间的全双工通信(full-duplex)。
发布对别人有帮助的原创内容是最好的 SEO 方式。
NGINX 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 NGINX 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。
阿里巴巴网络技术有限公司(简称:阿里巴巴集团)是以曾担任英语教师的马云为首的 18 人,于 1999 年在中国杭州创立,他们相信互联网能够创造公平的竞争环境,让小企业通过创新与科技扩展业务,并在参与国内或全球市场竞争时处于更有利的位置。
你若安好,便是晴天。
iOS 是由苹果公司开发的移动操作系统,最早于 2007 年 1 月 9 日的 Macworld 大会上公布这个系统,最初是设计给 iPhone 使用的,后来陆续套用到 iPod touch、iPad 以及 Apple TV 等产品上。iOS 与苹果的 Mac OS X 操作系统一样,属于类 Unix 的商业操作系统。
心是产生任何想法的源泉,心本体会陷入到对自己本体不能理解的状态中,因为心能产生任何想法,不能分出对错,不能分出自己。
IBM(国际商业机器公司)或万国商业机器公司,简称 IBM(International Business Machines Corporation),总公司在纽约州阿蒙克市。1911 年托马斯·沃森创立于美国,是全球最大的信息技术和业务解决方案公司,拥有全球雇员 30 多万人,业务遍及 160 多个国家和地区。
CSS(Cascading Style Sheet)“层叠样式表”是用于控制网页样式并允许将样式信息与网页内容分离的一种标记性语言。
Node.js 是一个基于 Chrome JavaScript 运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动, 非阻塞 I/O 模型而得以轻量和高效。
愿逝者安息!
PWA(Progressive Web App)是 Google 在 2015 年提出、2016 年 6 月开始推广的项目。它结合了一系列现代 Web 技术,在网页应用中实现和原生应用相近的用户体验。
应用程序编程接口(Application Programming Interface)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
JavaScript 一种动态类型、弱类型、基于原型的直译式脚本语言,内置支持类型。它的解释器被称为 JavaScript 引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在 HTML 网页上使用,用来给 HTML 网页增加动态功能。
Swagger 是一款非常流行的 API 开发工具,它遵循 OpenAPI Specification(这是一种通用的、和编程语言无关的 API 描述规范)。Swagger 贯穿整个 API 生命周期,如 API 的设计、编写文档、测试和部署。
PostgreSQL 是一款功能强大的企业级数据库系统,在 BSD 开源许可证下发布。
星期六到星期天晚,实行五天工作制后,指每周的最后两天。再过几年可能就是三天了。
NetBeans 是一个始于 1997 年的 Xelfi 计划,本身是捷克布拉格查理大学的数学及物理学院的学生计划。此计划延伸而成立了一家公司进而发展这个商用版本的 NetBeans IDE,直到 1999 年 Sun 买下此公司。Sun 于次年(2000 年)六月将 NetBeans IDE 开源,直到现在 NetBeans 的社群依然持续增长。
Hexo 是一款快速、简洁且高效的博客框架,使用 Node.js 编写。
CAP 指的是在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可兼得。
IDEA 全称 IntelliJ IDEA,是一款 Java 语言开发的集成环境,在业界被公认为最好的 Java 开发工具之一。IDEA 是 JetBrains 公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。
子曰:“工欲善其事,必先利其器。”
上帝为你关上了一扇门,然后就去睡觉了....努力不一定能成功,但不努力一定很轻松 (° ー °〃)
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于