news 2026/9/16 21:21:35

Joplin 笔记导入与导出完全指南:从 Evernote 迁移到 JEX 备份的实战方案

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Joplin 笔记导入与导出完全指南:从 Evernote 迁移到 JEX 备份的实战方案

Joplin 笔记导入与导出完全指南:从 Evernote 迁移到 JEX 备份的实战方案

【免费下载链接】joplinJoplin - the privacy-focused note taking app with sync capabilities for Windows, macOS, Linux, Android and iOS.项目地址: https://gitcode.com/GitHub_Trending/jo/joplin

本文以 Joplin 官方欢迎文档(readme/welcome/2_importing_and_exporting_notes.md)为核心骨架,系统讲解如何将 Evernote 及其他笔记应用的数据迁入 Joplin,以及如何通过 JEX、Markdown、JSON、PDF 等格式完成笔记导出与备份。读完本文,你将掌握桌面端菜单操作与终端命令行两种导入/导出路径,并能理解背后InteropService导入导出模块的源码级工作原理。

一、导入能力总览:Joplin 支持什么格式

Joplin 的导入能力由InteropService(位于 packages/lib/services/interop/InteropService.ts)统一调度。从该服务的模块注册表(modules()方法,InteropService.ts 第 57-209 行)可以看出,Joplin 内置的导入模块覆盖以下格式:

格式文件扩展名导入内容说明
enex.enexEvernote 笔记本、笔记、标签、图片、附件与元数据支持"转 Markdown"与"转 HTML"两种模式,可导入单文件或整个目录
jex.jexJoplin 自身导出的归档文件用于备份恢复与跨设备迁移
raw目录Joplin 原始导出目录每个条目对应一个文件
md.md.markdown.txt.htmlMarkdown / 文本 / HTML 文件支持文件与目录两种来源
md_frontmatter.md.markdown.txt.html带 Front Matter 的 Markdown与 Obsidian 等工具生态互通
obsidian.mdObsidian Vault 目录移动端也支持
one.zip.one.onepkgOneNote 笔记本.onepkg仅在 Windows 上可导入

这些模块注册信息同时是终端import命令自动补全--format参数的来源。此外,InteropService.registerModule()(InteropService.ts 第 212-215 行)允许第三方插件注册自定义导入/导出模块,这也是 Joplin 插件生态扩展数据互通能力的基础。

二、从 Evernote 导入:ENEX 全量迁移

2.1 ENEX 能带来什么

ENEX 是 Evernote 的导出格式。Joplin 通过 ENEX 文件可以导入完整的 Evernote 笔记本,以及笔记、标签、图片、附件文件和笔记元数据(如作者、地理位置等)。换句话说,一次 ENEX 导入即可完成笔记数据的整体搬迁。

值得注意的是,官方文档(readme/apps/import_export.md)明确指出有三个细节在导入后可能与原笔记略有差异:

  • 识别数据(Recognition data):Evernote 图片(尤其是扫描件/拍照文档)附带的 OCR 识别文本不会被保留。但若你在 Joplin 中启用了 OCR 功能,这些识别数据会以 Joplin 兼容的格式重建。
  • 颜色、字体大小与字体:Evernote 笔记正文以 HTML 存储,导入时会被转换为 Markdown。对于纯文本或基础排版(加粗、斜体、项目符号、链接等)的笔记,这种转换是无损的;表格也会被转换为 Markdown 表格。但对于非常复杂的笔记,颜色、字号、字体等样式信息可能丢失——正文文本本身始终会被完整导入。如果你必须保留这些额外样式数据,Joplin 也支持将 ENEX 以 HTML 形式导入(即注册表中的Evernote Export File (as HTML)模块)。
  • 笔记间链接:大部分链接可以保留,但 ENEX 格式本身不包含足够的链接目标信息(Evernote 使用内部 ID 关联链接,但该 ID 未与目标笔记绑定)。Joplin 会尝试根据笔记标题猜测链接目标,这在大多数情况下有效,但在"多篇笔记标题相同"或"链接文字与目标笔记标题不一致"时会失败,此时原始 Evernote 链接会原样保留。

2.2 桌面端操作步骤

  1. 先在 Evernote 中将笔记本导出为 ENEX 文件。
  2. 打开 Joplin桌面应用,选择菜单File > Import > ENEX,选中你的 ENEX 文件。
  3. 笔记会被导入到一个新建的独立笔记本中。之后你可以按需将其移动到其他笔记本、重命名笔记本等。

关于单文件与目录两种导入形态,官方导入文档还补充了关键行为:

  • 导入单个文件时,Joplin 会创建一个与文件名同名的笔记本,所有笔记都导入其中;
  • 导入一个包含多个 ENEX 文件的目录时,Joplin 会为每个文件创建一个笔记本。

2.3 终端命令行操作

在终端应用(CLI)的命令行模式下,使用import命令:

import /path/to/file.enex

这会将笔记导入到一个以文件名命名的新笔记本中。同样支持导入包含多个 ENEX 文件的目录。其底层逻辑可在 packages/app-cli/app/command-import.ts 中看到:命令通过InteropService.instance().import()执行,--format未指定时默认为auto,即由InteropService.import()内部的moduleByFileExtension_()(InteropService.ts 第 296-308 行)根据文件扩展名自动匹配导入模块;--output-format md|html用于在"ENEX 转 Markdown"与"ENEX 转 HTML"两种模式间切换。

从源码看,ENEX 导入的完整调用链是:InteropService.import()newModuleByFormat_()解析出InteropService_Importer_EnexToMd(packages/lib/services/interop/InteropService_Importer_EnexToMd.ts)→importEnex()执行解析并写入数据库。目录导入场景下,还会在全部文件导入完成后调用restoreCrossFolderLinks()restoreEnexNoteLinks()做跨笔记本的笔记链接修复(依据标题匹配目标笔记),这正对应上文提到的"链接猜测"机制。

三、从其他应用与 Markdown 文件导入

3.1 通用思路

从其他笔记应用迁移到 Joplin 的通用做法是:先将笔记转换为 ENEX(Evernote 格式)、HTML 或 Markdown,再导入 Joplin。官方为此维护了针对具体应用的迁移指南(详见 readme/apps/import_export.md 中引用的社区 wiki 文档)。

3.2 从 Markdown / 文本文件导入

Joplin 可以直接导入 Markdown 文件,既支持单个文件,也支持整个目录。

桌面端:

  • 导入单个文件:File > Import >MD - Markdown (file),选中 Markdown 文件,它会导入到当前选中的笔记本;
  • 导入整个目录:File > Import >MD - Markdown (directory),选中目录的顶层文件夹。目录结构会按笔记本 > 子笔记本 > 笔记的层级在 Joplin 内原样保留。

终端:

import --format md /path/to/file.md import --format md /path/to/directory/

从注册表可见,md模块同样接受.markdown.txt.html扩展名,因此 HTML 文档与纯文本文件也能通过同一模块导入(文本文件另有专门的txt模块入口)。Joplin 还额外提供了md_frontmatter(Markdown + Front Matter)与obsidian(Obsidian Vault)两种导入格式,便于与 Obsidian 生态双向互通。

四、导出笔记:JEX 备份与多格式输出

4.1 JEX 格式:面向备份的无损归档

JEX(Joplin Export file)是 Joplin 的核心导出格式,它是一个tar 归档文件,可容纳多篇笔记、多个笔记本等。官方定位它"主要面向备份用途",其关键特性是无损:所有笔记、以及地理位置、更新时间、标签等元数据都会被完整保留,并且可以重新导入 Joplin。

从实现看,JEX 导出器InteropService_Exporter_Jex(packages/lib/services/interop/InteropService_Exporter_Jex.ts)并非独立实现序列化,而是复用 Raw 导出器(InteropService_Exporter_Raw)把数据先写入临时目录,再由tarCreate()打包成.jex文件,因此 JEX 与 Raw 两种格式的数据内容完全同构,区别仅在于前者是压缩打包的文件、后者是散落在目录中的单个文件。

4.2 Raw 格式

Raw(原始)格式与 JEX 内容相同,只是数据直接写入一个目录,每个条目对应一个单独的文件。它便于人类直接查看、用脚本处理,或在需要精细化控制时使用,适合作为 JEX 之外的可读性备份形态。

4.3 其他导出格式

Joplin 还支持导出为多种其他格式,可按单条笔记、整个笔记本或全部内容三个粒度执行:

  • Markdown(目录形态,另有 Markdown + Front Matter 变体):便于用任意文本工具阅读与版本管理;
  • HTML(单文件或目录):便于浏览器直接查看与分享,此格式仅在桌面端支持;
  • JSONPDF:对应结构化数据交换与打印/分发场景。

这些模块同样注册在InteropServiceexportModules列表中(InteropService.ts 第 163-204 行)。

4.4 桌面端与终端操作

桌面端:通过File > Export菜单选择目标格式与范围即可。

终端:使用export命令(packages/app-cli/app/command-export.ts):

# 导出为 JEX(默认格式) export /path/to/backup.jex # 指定导出格式 export --format jex /path/to/backup.jex export --format raw /path/to/backup_dir export --format md /path/to/markdown_dir # 只导出某条笔记或某个笔记本 export --note <note-id> ... export --notebook <notebook-id> ...

注意:终端版export命令的--format选项会过滤掉html(源码中会抛出 "HTML export is not supported. Please use the desktop application." 错误),因此HTML 导出请使用桌面应用。默认格式为jex,与桌面端一致。

4.5 导出流程的源码级细节

InteropService.export()(InteropService.ts 第 363-517 行)展示了导出时的完整工作流,理解它有助于你预判备份结果:

  1. 收集待导出条目:递归枚举文件夹树(Folder.childrenIds('')),按"文件夹 → 笔记 → 资源 → 标签 → 笔记-标签关联"的顺序入队;通过Note.linkedResourceIds()解析每篇笔记正文引用的附件资源,确保附件不遗漏;可指定sourceFolderIds/sourceNoteIds缩小导出范围。
  2. 冲突笔记处理:默认不导出冲突笔记,可通过includeConflicts选项包含(同时会包含冲突文件夹)。
  3. 加密与异常保护:若条目处于加密状态(encryption_appliedencryption_blob_encrypted),会跳过并写入警告,提示等待解密后再导出;单个条目处理失败不会中断整体导出,而是记录在result.warnings中。
  4. 类型分批处理:按固定类型顺序(TYPE_FOLDER → TYPE_RESOURCE → TYPE_NOTE → TYPE_TAG → TYPE_NOTE_TAG)分批调用导出器的prepareForProcessingItemType/processItem/processResource,并通过onProgress回调报告进度。

因此,导出的.jex文件是一个自包含的完整快照:重新导入时(File > Import > JEX)即可恢复笔记本层级、附件与标签关系,这正是其适合作为备份的根本原因。

五、结语与推荐实践

综合来看,Joplin 的导入导出体系可以归纳为三条实战建议:

  1. 从 Evernote 迁入:桌面端 File > Import > ENEX,或终端import,一条命令即可搬入完整笔记本;对样式保留有强需求时可选用 HTML 模式导入。
  2. 日常备份:定期用JEX格式整体导出(支持笔记本/笔记粒度),它无损且可回导,是官方推荐备份形态;需要可读性时改用 Raw 目录或 Markdown。
  3. 生态互通:利用 Markdown / Front Matter / Obsidian 导入导出模块,在 Joplin 与其他笔记工具之间自由流转纯文本笔记。

所有导入导出操作背后,均由 packages/lib/services/interop/InteropService.ts 这一可扩展的模块化框架承载,其注册表、自动格式检测与进度回调机制,保证了从图形界面到命令行的一致体验,也为后续新增格式(含插件注册自定义模块)留下了清晰的扩展点。

【免费下载链接】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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/16 21:19:25

DeepSeek-R1+Dify+BGE-M3:打造能读PDF的智能客服实践

1. 项目定位&#xff1a;这个智能客服要解决什么问题很多团队接智能客服需求的时候&#xff0c;第一版都是“开箱即聊”——把大模型 API 接上&#xff0c;前端挂个对话窗口&#xff0c;客户问了就答。这种方案在闲聊场景下没问题&#xff0c;可一旦涉及企业自己的产品手册、售…

作者头像 李华
网站建设 2026/9/16 21:18:16

户外储能柜液冷技术:能效提升与运维优化方案

1. 户外储能柜的能耗与维护痛点解析户外储能柜作为分布式能源系统的关键设备&#xff0c;长期面临两大核心挑战&#xff1a;能耗效率低下与运维复杂度高。传统风冷方案在40℃以上高温环境时&#xff0c;散热效率会下降35%-50%&#xff0c;导致PCS&#xff08;电力转换系统&…

作者头像 李华
网站建设 2026/9/16 21:18:03

注意力机制实战指南:从原理到代码实现与工程优化

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/16 21:15:41

机器人控制器为何全面转向PCIe总线架构

1. 为什么机器人控制器正在悄悄换掉传统总线&#xff0c;全面拥抱PCIe&#xff1f;最近三年&#xff0c;我参与过七款工业级机器人控制器的硬件架构评审&#xff0c;从协作机械臂到AGV调度主控&#xff0c;再到高精度SCARA运动控制器&#xff0c;一个明显趋势是&#xff1a;PCI…

作者头像 李华