拓冰建站拓冰建站
首页 / 资讯中心 / 正文

Joplin 2.6 新特性深度解析:按笔记本排序、笔记本图标、加密协作与同步性能优化

Joplin 2.6 新特性深度解析按笔记本排序、笔记本图标、加密协作与同步性能优化【免费下载链接】joplinJoplin - the privacy-focused note taking app with sync capabilities for Windows, macOS, Linux, Android and iOS.项目地址: https://gitcode.com/GitHub_Trending/jo/joplinJoplin 2.6 是面向桌面端、移动端与命令行CLI三大平台同步发布的一次重要更新围绕笔记组织效率与同步可靠性两条主线带来了多项实质改进全新的排序按钮与按笔记本独立的排序规则、桌面与移动端均可使用的笔记本 emoji 图标、基于 Joplin Cloud / Joplin Server 的加密笔记本协作以及同步启动、Markdown 编辑器分屏滚动、S3 同步与 HTML 导出等底层优化。本文将逐项拆解这些新特性的使用方式并结合当前仓库源码packages/lib/models/settings/builtInMetadata.ts、packages/lib/models/Folder.ts、packages/lib/SyncTargetAmazonS3.js 等说明其背后的实现原理帮助你在实际使用中更充分地利用这些能力。一、按笔记本排序与排序按钮1.1 笔记列表顶部的排序按钮2.6 版本在笔记列表上方新增了排序按钮区域这是本功能最直观的变化。通过该区域可以按以下字段对笔记排序修改时间modification date创建时间creation date标题title自定义顺序custom order每个字段都支持升序与降序两种方向且方向切换会即时生效并持久化。按钮区截图如下从源码看这套排序能力在底层由一组专门的内置设置驱动。在 packages/lib/models/settings/builtInMetadata.ts 中排序字段定义如下notes.sortOrder.field: { value: user_updated_time, type: SettingItemType.String, section: note, isEnum: true, public: true, appTypes: [AppType.Cli], label: () _(Sort notes by), options: () { const noteSortFields [user_updated_time, user_created_time, title, order, todo_due, todo_completed]; // ... }, storage: SettingStorage.File, isGlobal: false, },由此可见排序字段实际支持的可选值比发布说明列举的四种更丰富完整枚举为字段值含义user_updated_time修改时间默认值user_created_time创建时间title标题order自定义顺序todo_due待办事项截止时间todo_completed待办事项完成时间默认按修改时间排序如果你大量使用待办事项也可以切换到todo_due或todo_completed按截止/完成时间组织笔记。1.2 全局排序与按笔记本独立排序默认情况下所选排序规则会应用到所有笔记本。2.6 新增了按笔记本独立排序能力启用后某个笔记本的排序规则只对该笔记本生效不影响其他笔记本。启用方式非常直接——在笔记本上右键选择Toggle own sort order切换自身排序顺序这一特性由 Kenichi Kobayashi 开发。它解决了不同场景下的实际痛点比如收件箱希望按创建时间倒序而项目笔记希望按自定义顺序排列过去只能全局统一现在每个笔记本可以各自为政。1.3 背后的设置项与触发机制除了排序字段本身仓库中还定义了与之配套的若干设置项可结合 CLI 或配置文件灵活调整notes.sortOrder.reversebuiltInMetadata.ts布尔值是否反向排序默认true即默认降序。notes.sortOrder.buttonsVisiblebuiltInMetadata.ts布尔值是否在笔记列表顶部显示排序按钮默认true属于外观appearance配置分区。folders.sortOrder.field与folders.sortOrder.reversebuiltInMetadata.ts这两个设置项表明排序能力同样延伸到了笔记本文件夹列表本身并非只针对笔记。源码注释还揭示了排序设置的联动机制凡是名称以notes.sortOrder开头的设置项都是特殊设置修改它会自动触发笔记列表的刷新见 packages/lib/BaseApplication.ts 中的generalMiddleware()逻辑。也就是说用户在任何界面改动排序整个笔记列表都会立刻按新规则重新渲染无需手动刷新。1.4 笔记与文件夹的排序实现在 packages/lib/models/Note.ts 与 packages/lib/models/Folder.ts 中可以看到排序逻辑的落地笔记排序在查询层按所选字段与方向组织结果而文件夹树排序Folder.sortFolderTree见 packages/lib/models/Folder.ts则默认按字母顺序排列并递归应用到子文件夹。这与笔记列表的排序按钮是两套独立但互补的机制——一个管笔记一个管笔记本目录树。二、笔记本图标支持2.6 起桌面端与移动端都可以为笔记本关联图标。操作步骤为右键点击笔记本 → 选择Edit随后会打开新的笔记本编辑对话框在这里可以修改笔记本标题并为其分配一个图标。目前图标使用 emoji发布说明也提到未来不排除支持自定义图标从实现层面看笔记本图标并不是一个独立的数据库字段而是以 JSON 字符串形式序列化存储的。在 packages/lib/models/Folder.ts 中可以看到public static serializeIcon(icon: FolderIcon): string { return icon ? JSON.stringify(icon) : ; } public static unserializeIcon(icon: string): FolderIcon { if (!icon) return null; return { ...defaultFolderIcon(), ...JSON.parse(icon), }; } public static shouldShowFolderIcons(folders: FolderEntity[]) { // If at least one of the folder has an icon, then we display icons for all // folders (those without one will get the default icon). This is so that // visual alignment is correct for all folders, otherwise the folder tree // looks messy. return !!folders.find(f !!f.icon); }其中值得注意的细节是shouldShowFolderIcons的设计只要有一个笔记本设置了图标所有笔记本都会显示图标位——没有图标的笔记本使用默认图标占位。这样做的目的是保证文件夹树的视觉对齐避免部分笔记本有图标、部分没有导致的参差不齐。反序列化时则通过defaultFolderIcon()提供默认值再与解析出的 JSON 合并保证兼容性。三、Joplin Cloud 上的加密笔记本协作得益于此前几个版本在加密能力上的积累2.6 起可以在 Joplin Cloud或 Joplin Server同步时对加密笔记本进行共享与协作编辑。使用前提非常明确共享双方都需要升级到 Joplin 2.6发起共享的一方需要开启端到端加密。满足上述条件后绝大多数流程由应用自动完成——尤其是应用会自动为参与协作的每个用户生成并分发所需的加密密钥用户无需手动导出或交换密钥文件。这一能力的关键价值在于笔记本在云端是以密文形式存储与传输的同时多个协作者又能解密和编辑同一批笔记兼顾了隐私保护与多人协作两个目标。需要注意此功能依赖 Joplin Cloud / Joplin Server 作为同步后端本地文件系统、WebDAV 等其它同步目标不在此功能覆盖范围内。四、同步启动速度优化同步过程的启动阶段通常需要先获取一个同步锁lock而获取锁涉及多轮网络请求在启动时可能比较耗时。2.6 对这一流程做了针对性优化减少了获取锁所需的请求次数每次请求消耗的资源也更少。优化效果按同步目标有所差异对 Joplin Cloud 的收益最明显Joplin Server 次之其它同步目标也有小幅提升。这类优化直接影响的是每次打开应用触发同步时的等待时间属于体感层面的体验改进。五、Markdown 编辑器分屏滚动改进Markdown 编辑界面默认是左编辑、右预览的分屏布局2.6 之前当笔记中包含多张图片及其它媒体时左右两侧的滚动位置经常不同步影响长文校对体验。Kenichi Kobayashi 在本版本中重做了这一机制使编辑器与预览区在滚动时保持同步——即使笔记内容很复杂。其行为表现是两侧会互相等待或加速以尽可能保持对齐在长笔记中尤其明显。该功能附带了详细的技术说明文档随对应的 Pull Request 一并提交即发布说明中引用的 PR #5512 技术文档对实现细节感兴趣的读者可以到该 PR 的讨论中查阅。六、S3 同步的改进与优化6.1 可靠性与错误处理得益于 Lee Matos 的工作2.6 中 S3 同步的可靠性明显提升错误处理也更加完善。对使用 Amazon S3或兼容 S3 协议的对象存储作为同步后端的用户来说这意味着更少的同步失败与更明确的报错信息。6.2 SDK 从 v2 升级到 v3本次升级的另一个重要变化是将底层 AWS SDK 从 v2 升级到v3。在 packages/lib/SyncTargetAmazonS3.js 中可以确认当前实现直接引用了 v3 的模块化客户端const { S3Client, HeadBucketCommand } require(aws-sdk/client-s3);同步目标在初始化时通过new S3Client(this.s3AuthParameters())SyncTargetAmazonS3.js创建客户端并按需执行HeadBucketCommand等操作。由于 v3 采用按需引入的模块化设计最终可执行文件的体积因此缩小了约3–5 MB具体数值因操作系统而异。源码中还保留了针对 v3 的已知问题的处理痕迹例如 v3 在自动时钟偏移修正上存在 bugSyncTargetAmazonS3.js以及部分 301/403 错误的 XML 解析问题SyncTargetAmazonS3.js这些都在实现中做了规避处理属于版本升级时一并解决的兼容性细节。七、将笔记导出为自包含 HTML 文件2.6 改进了单条笔记的 HTML 导出方式导出单个笔记为 HTML 时所有图片、脚本、样式及其它附件都会被打包进同一个 HTML 文件而不再像以前那样生成多个文件与目录。这一变化显著提升了导出的可用性分享给未安装 Joplin 的人时只需发送一个文件即可查看完整笔记含内嵌图片与样式归档、邮件转发、放入网页等场景都更加方便无需依赖外部资源目录文件本身即自包含self-contained。如果你有把某条笔记原样分享出去的需求这是 2.6 中值得优先使用的能力。八、其它变更与缺陷修复本版本还包含总计19 项新功能与改进、16 项缺陷修复完整清单分布在各个平台的更新日志中可在仓库内查看readme/about/changelog 目录下的桌面端、Android、iOS 与 CLI 更新日志文件。由于 2.6 是移动端、桌面端和 CLI 同步发布的版本各平台日志相互补充合在一起才能看到本次更新的全貌。小结Joplin 2.6 是一轮体验优化色彩浓厚的版本排序按钮与按笔记本独立排序让笔记组织方式更灵活底层由notes.sortOrder.*系列设置驱动字段可覆盖修改时间、创建时间、标题、自定义顺序乃至待办截止时间笔记本 emoji 图标以 JSON 序列化方式存储并借助全量占位策略保持目录树整齐加密笔记本协作把隐私保护与多人编辑统一到了 Joplin Cloud / Joplin Server 之上而同步锁优化、Markdown 分屏滚动重写、S3 SDK 升级与自包含 HTML 导出则分别在不同环节提升了稳定性和效率。无论是个人知识管理还是团队协作都可以结合上文提到的设置项与操作路径把这些能力真正用起来。【免费下载链接】joplinJoplin - the privacy-focused note taking app with sync capabilities for Windows, macOS, Linux, Android and iOS.项目地址: https://gitcode.com/GitHub_Trending/jo/joplin创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门