基于 Tauri, 我写了一个 Markdown 桌面 App

sxkk20082年前知识分享281

前言

大家好,我是Ai知识分享。

去年,我开发了一款微信排版编辑器 MDX Editor。它可以自定义组件、样式,生成二维码,代码 Diff 高亮,并支持导出 Markdown 和 PDF 等功能。然而,作为一个微信排版编辑器,它的受众面比较有限,并不适用于每个人。因此,我基于该编辑器开发了 MDX Editor 桌面版,它支持 Mac、Windows 和 Linux,并且非常轻量,整个应用的大小只有 7M。现在,MDX Editor 桌面版已经成为我的创作工具。如果你对它感兴趣,可以在文末获取。

演示

技术选型

开发 MDX Editor 桌面 App,我使用了如下核心技术栈:

  • React (Next.js)

  • Tauri —— 构建跨平台桌面应用的开发框架

  • Tailwind CSS —— 原子类样式框架,支持深色皮肤

  • Ant Design v5 —— 使用"Tree"组件管理文档树

功能与实现

1. MDX 自定义组件

MDX 结合了 Markdown 和 JSX 的优点,它让你可以在 Markdown 文档中直接使用 React 组件,构建复杂的交互式文档。如果你熟悉 React,你可以在 "Config" 标签页中自定义你的组件;如果你不是一个程序员,你也可以基于现有模板进行创作。例如,模板中的 "Gallery" 组件实际上就是一个 "flex" 布局。

代码

function Gallery({ children }) {
  return <div className="gallery flex">{children}div>
}

文档写作

预览效果

2. 深色皮肤

对于笔记软件来说,深色皮肤已经成为一个不可或缺的部分。MDX Editor 使用 Tailwind CSS 实现了深色皮肤。

3. 多主题

编辑器内置了 10+个文档主题和代码主题,你可以点击右上方的设置按钮进行切换。

4. 本地文件管理

桌面 App 还支持管理本地文件。你可以选择一个目录,或者将你的文档工作目录拖入编辑器,便能够实时地在编辑器中管理文档。

当我在开发这个功能之前,我曾担心自己不熟悉 Rust,无法完成这个功能。但是,熟悉了 Tauri 文档之后,我发现其实很简单。Tauri 提供了文件操作的 API,使得我们不需要编写 Rust 代码,只需要调用 Tauri API 就能完成文件管理。

import { readTextFile, BaseDirectory } from '@tauri-apps/api/fs'

// 读取路径为 `$APPCONFIG/app.conf` 的文本文件

const contents = await readTextFile('app.conf', { dir: BaseDirectory.AppConfig })

文档目录树采用了 Ant Design 的 Tree 组件实现,通过自定义样式使其与整体皮肤风格保持一致,这大大减少了编码工作量。

5. 文档格式化

在文档写作的过程中,格式往往会打断你的创作思路。虽然 Markdown 已经完全舍弃了格式操作,但有时你仍然需要注意中英文之间的空格、段落之间的空行等细节。MDX Editor 使用了 prettier 来格式化文档,只需按下 command+s 就能自动格式化文档。

最后

如果你对这个编辑器感兴趣,可以在 Github 下载桌面版体验。如果你对实现过程感兴趣,也可以直接查看源码。如果您有任何好的建议,可以在上面提出 Issues,或者关注微信公众号 "JS 酷" 并留言反馈。

相关文章

智能AI电话机器人:应用效果和安全性

智能AI电话机器人:应用效果和安全性

  随着人工智能技术的不断发展,智能AI电话机器人也逐渐成为了人们关注的焦点。AI电话机器人作为一种新型通信方式,具有无限潜力和广阔的应用前景。本文以智能AI电话机器人为中心...

vsinder

一个为程序员设计的约会应用程序,你可以在上面刷代码。

image

通过写一段代码,展现自己,然后通过系统自动匹配交友。还有 ios 和安卓版 app。

小霸王

小霸王是一款基于 vscode 的 nes 游戏插件,能让你在紧张的开发之余在 vscode 里放松身心。通过劳逸结合,提升开发效率。

image.png

盘点那些好玩有趣的 VSCODE 插件

🌈  彩虹屁老婆一个在你写代码时疯狂夸赞你的二次元鼓励师/老婆。📕 仓库地址: github.com📗 插件地址: marketplace.visualstudio.comvsinder一个为程序员设...

实现一个 Code Pen:(三)10 行代码实现代码格式化

在上文中,我们使用 monaco-editor 结合 Next.js,打造了编辑器的功能,在本文中,我们将继续优化 monaco-editor, 使它拥有代码格式化的功能。prettier 在浏览器使...

百度语音识别:为普及人工智能带来希望

百度语音识别:为普及人工智能带来希望

  对于人工智能的发展,语音识别技术一直是其中重要的一环。如今,百度语音识别免费的推出,无疑为广大用户带来了更加便利的体验和更广阔的应用前景。本文将探讨百度语音识别免费的意义...

人工智能计算中心:推动AI技术发展的重要支撑

人工智能计算中心:推动AI技术发展的重要支撑

  近年来,人工智能(AI)技术的高速发展引起了全球范围内的关注。无论是企业、政府还是个人,都在探索如何利用AI技术实现更多的收益。而在这场AI技术革命中,人工智能计算中心(...

AI换脸:新科技引领数字时代的视觉变革

AI换脸:新科技引领数字时代的视觉变革

  近年来,随着人工智能技术的不断创新和发展,越来越多的科技应用逐渐涌现,其中最受关注的莫过于AI换脸技术。所谓AI换脸,就是借助人工智能技术,将一个人的面部表情、肢体动作等...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。