当前位置: 首页 > news >正文

Tauri Tutorial Markdown 编辑器开发:Monaco Editor + markdown-it 打造 MdHub

Tauri Tutorial Markdown 编辑器开发:Monaco Editor + markdown-it 打造 MdHub

【免费下载链接】tauri-tutorial📚 Tauri Tutorial (系列教程 - 打造属于自己的跨端应用)项目地址: https://gitcode.com/gh_mirrors/ta/tauri-tutorial

想要用Tauri 教程系列的方式,从零打造一款属于自己的跨端桌面应用吗?本文带你走进tauri-tutorial项目中的MdHub——一个基于Monaco Editormarkdown-it构建的轻量级 Markdown 编辑器。它是 Tauri 开发中"前端 Web 技术 + 桌面能力"组合的绝佳范例,非常适合新手学习 Tauri 跨端应用开发与 Markdown 编辑器实现思路。

MdHub 是什么?✨

MdHub 是tauri-tutorial项目(应用名为 OhMyBox)内置的工具之一,在仪表盘中通过/tools/mdhub路由即可进入。它的核心能力很简单:

  • 左侧使用Monaco Editor(VS Code 同款编辑器内核)提供 Markdown 源码编辑
  • 右侧实时渲染 Markdown 预览,语法高亮开箱即用
  • 支持一键切换预览开关、导出 PDF(预留入口)
  • 整套界面运行在 Tauri 桌面包壳中,体验与原生应用无差异

核心技术栈一览 📦

MdHub 用到的核心依赖都定义在项目的package.json中,这里整理成一张表方便你快速把握:

依赖作用
@monaco-editor/reactReact 版 Monaco Editor,负责代码编辑体验
markdown-it把 Markdown 文本解析为 HTML
highlight.js代码块语法高亮
github-markdown-cssGitHub 风格的 Markdown 预览样式
allotment可拖拽调整宽度的分栏布局
@tauri-apps/api调用 Tauri 的桌面能力(文件系统、弹窗等)

从入口看实现:路由与视图 🗺️

MdHub 的页面入口定义在src/routes.tsx中,路由路径为/tools/mdhub,对应组件位于src/views/mdhub/index.tsx。页面整体结构很清晰:

<FullScreen taskbar={...}> <Editor lang="markdown" onChange={handleEditor} preview={...} /> </FullScreen>

FullScreen是项目通用的全屏布局组件(src/layouts/FullSreen.tsx),顶部任务栏放置了返回按钮、预览开关和 PDF 导出图标,符合 Tauri 桌面应用的操作习惯。

编辑器核心:Monaco Editor 集成 🧩

编辑体验由通用组件src/components/Editor/index.tsx提供,它接收langdefaultValueonChangepreview四个 props,内部通过Allotment实现左右分栏:

  • 左栏渲染<MonacoEditor>,传入defaultLanguage与内容回调
  • 右栏仅在传入preview时才渲染,实现"编辑 + 实时预览"双栏效果
  • 面板最小宽度设为 100px,用户可以自由拖拽调节比例

这样的组件设计让 Editor 不只服务于 Markdown,任何语言(如 JSON、Rust)都能复用,体现了"工具集"项目的通用性。

实时预览:markdown-it 的魔法 🪄

预览渲染的关键在src/utils/mdParser.ts,这里封装了一个全局可复用的 markdown-it 实例:

export const mdParser = MarkdownIt({ html: true, highlight: (str, lang) => { /* hljs 高亮逻辑 */ }, });

几个值得注意的细节:

  • 开启html: true,允许 Markdown 中嵌入 HTML 片段
  • json5语言做了兼容处理,自动映射为js高亮
  • 高亮结果包装为omb-code-wrap/omb-code-container类,便于在src/views/mdhub/index.scss中定制深色代码块样式

在 MdHub 视图中,编辑器每次输入都会触发handleEditor,把mdParser.render(content)的结果交给预览区,通过dangerouslySetInnerHTML注入到markdown-body容器里,再套用github-markdown-css,呈现出的效果和 GitHub 阅读体验几乎一致。

手动体验:本地运行指南 🚀

如果你想把项目跑起来亲手体验 MdHub,可以 clone 仓库到本地:

git clone https://gitcode.com/gh_mirrors/ta/tauri-tutorial

按照README.md的说明,需要先安装 Rust、Node.js、wasm-pack 和 rsw。启动时必须开两个终端窗口,顺序不能乱:

# 终端一:先启动 Rust wasm 监听(不要关闭) yarn rsw watch # 终端二:再启动 Tauri 开发模式 yarn tauri dev

应用启动后,在仪表盘工具区点击 MdHub 图标,就能看到我们文章里介绍的 Markdown 编辑器了。

扩展思路:把 MdHub 变得更强大 💡

学会了核心实现,你还可以沿着这个方向继续扩展:

  1. 文件读写:结合src/system/fs.ts中封装的readTextFile/writeFile方法,为 MdHub 接入打开、保存 Markdown 文件的能力
  2. 多语言支持:项目已集成 i18next 多语言体系(locales/目录),可以为新功能同步补充中英文文案
  3. 自定义主题:Monaco Editor 支持切换主题,可以让编辑器适配深浅色模式
  4. 导出 PDF:任务栏已预留 PDF 入口,可以调用 Tauri 的能力实现文档导出

写在最后 📝

通过 MdHub 这个例子,我们完整看到了"Monaco Editor + markdown-it"这套组合如何在 Tauri 跨端应用中被组织起来:通用 Editor 组件负责编辑、mdParser负责解析、github-markdown-css 负责观感,各司其职又高度解耦。对于想入门Tauri 桌面应用开发或想实现 Markdown 编辑器的同学来说,这份代码就是一份开箱即用的优质样板。

跟着tauri-tutorial系列教程动手敲一遍,你会发现:用 Web 技术打造跨端应用,比想象中更简单。

【免费下载链接】tauri-tutorial📚 Tauri Tutorial (系列教程 - 打造属于自己的跨端应用)项目地址: https://gitcode.com/gh_mirrors/ta/tauri-tutorial

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.cnnetsun.cn/news/4123602.html

相关文章:

  • MediaBrowser 常见问题避坑指南:开发者最常踩的 8 个坑及解决方案
  • storageless完整API速查:Configuration与SessionInterface核心方法详解
  • 雨雾、夜间复杂工况下机旅客实时三维定位与轨迹生成,筑牢机场边检管控第一环
  • JDK-21虚拟线程使用
  • Cortex-M3-STM32F1 开发:(四十六)ADC 实例 4 :单通道 ADC 过采样实例,使用 DMA,两种编程方式
  • 收藏夹里500个“稍后再看“吃灰?这款免费AI视频总结工具帮你3分钟榨干B站课程
  • gruf 健康检查集成:接入官方 gRPC 健康检查协议,让 Ruby 微服务秒过探针
  • S-mall-ssm 订单状态机设计:5种状态如何驱动电商订单的完整生命周期?
  • 你的macOS菜单栏为什么总是乱成一团?这个叫Ice的菜单栏管理工具给出了答案
  • 老Mac免费吃上macOS Sequoia:OpenCore Legacy Patcher从零到上手完整指南
  • 磁盘空间告急怎么办?免费开源Czkawka的14个清理工具,帮你找出重复文件、相似图片和空文件夹
  • 深入源码:THCalendarDatePicker 日历网格布局算法是如何工作的?
  • 老款Mac焕新三步走:用OpenCore Legacy Patcher免费升级最新macOS完整指南
  • DesktopAssistant打包发布实战:生成Windows安装程序与deb包的完整步骤
  • ZCode与DeepSeek集成指南:打造本地AI编程助手
  • Dtims CPB4612-LF 控制板
  • 对比评测:GifHub vs 其他 GitHub GIF 插件,谁才是评论区动图之王?
  • TypeScript-New-Handbook 新手教程:10 分钟理解静态类型检查的核心理念
  • TypeScript-New-Handbook 完全指南:微软官方 TypeScript 新手册,一篇读懂全貌
  • 磁盘清理工具免费推荐:开源 Czkawka,把重复文件与相似图片一次清干净
  • THCalendarDatePicker 手势交互揭秘:滑动切换月份与年份的 5 个实现细节
  • 基于SpringBoot+Vue的个性化音乐平台网站(源码+讲解视频+LW)
  • obs-shaderfilter扩展像素功能解析:轻松实现投影与边框的渲染技巧
  • 【软考信息安全】密码学考点“涮“明白!5张美食思维导图带你一锅端
  • 给 Copilot for Xcode 开发自定义工具:3 个实战案例,把 AI 助手调教成真正会干活的搭档
  • ECC 智能体钩子系统架构解析:如何为 AI 编码 Agent 装上“会记忆、能拦截、可审计“的行为护栏
  • 洛雪音乐音源怎么装最省心?免费无损音源合集实测导入指南
  • 免费通用设计字体 Morisawa BIZ UDGothic 上手教程:三步搞定下载、安装与排版
  • FIFA 23 修改器完整免费指南:从首条脚本到高阶模组,快速掌控生涯模式全细节
  • 微信聊天记录终极备份指南:用WeChatMsg免费导出HTML、Word、CSV与年度报告