Arya - 在线 Markdown 编辑器

本贴最后更新于 2017 天前,其中的信息可能已经物是人非

Arya 在线 Markdown 编辑器

Arya,是一款基于 VueVditor,所构建的在线 Markdown 编辑器,轻量且强大:内置粘贴 HTML 自动转换为 Markdown,支持流程图、甘特图、时序图、任务列表,可导出携带样式的图片、PDF、以及转换 Markdown 成微信公众号特制的 HTML 等;另外支持实时预览本地存储、字符计数,提供常用快捷键(Tab),及代码块添加复制等功能。

aryamarkdown.png

Arya 另一大优点在于:编辑内容只会在您本地进行保存,不会上传您的数据至服务器,绝不窥测用户个人隐私,可放心使用;Github 源码:markdown-online-editor,部分功能仍在开发 🚧,敬请期待。

背景初衷 📝

早期就有关注到由黑客派所出品的 Vditor:一款为未来而构建的下一代 Markdown 编辑器。然,现而今市面上所存在的 Markdown 编辑器,或多或少都存在一些问题(或功能不全,或高级功能收费...),因此基于自身所需,加之 Vditor 的强大,就诞生了做一款在线 Markdown 编辑器的念头;取其名曰:Arya,个中原由,有在观《权利的游戏》感记一文有做记载。

功能支持 🎉

  • 🎉 寻常 Markdown 解析器都拥有的基本功能;
  • ✨ 支持流程图甘特图时序图任务列表
  • 🏁 支持粘贴 HTML 自动转换为 Markdown
  • 💃🏻 支持插入原生 Emoji、设置常用表情列表;
  • 🚑 支持编辑内容保存本地存储,防止意外丢失;
  • 📝 支持实时预览,主窗口大小拖拽,字符计数;
  • 🛠 支持常用快捷键(含 Tab),及代码块添加复制;
  • 🚧 支持免费导出携带样式 PDF、PNG、JPEG 等;
  • 🚧 支持转换 Markdown 成公众号特制的 HTML
  • 🚧 内置多种漂亮样式,并且支持用户自定义

关于定位 📌

众所周知,早在几年前,市面上就充盈百余种不同的 Markdown 编辑器;其中不乏很多功能强大,体验良好的 Markdown 神器;在 倾城之链 | Markdown 标签中,也是收录了些 Markdown 相关工具。但,就如在 初衷 中提及的,那些工具或多或少都存在一些问题比如:功能不全,使用不便,体验不佳,或高级功能收费等;对于 Arya,无意让她在 Markdown 的江湖逐鹿中原,目前给其设定就是:轻盈且强大免费又安全。关于 Arya 能做的,可参见 Arya Markdown 功能支持;当然,那并不是 Arya 最终形态,如果您有更多关于 Markdown 相关的诉求或建议,欢迎 👏 提给我(可以通过各种渠道),这边会尽最大努力满足您。

于 2019 年 5 月 19 号,深圳.福田。

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • jeffjade
    作者

    如果能把游戏 & 看视频的习惯给戒了,那trollface ~ 欢迎体验下最新的 arya 系工具:arya-jarvis

  • 其他回帖
  • jeffjade
    作者
    1. SPA 跟异步没什么关系;但,经过预渲染后,总报出 Lute or hljs 没有定义的错误(具体原因还没查清);
    2. 延迟确实很不优雅。

    所以最后采取的一个 Hack 的办法,就是提前发起了 Lute 相关库的请求;从测试来看,能够解决问题,目前已经发布 https://markdown.lovejade.cn/

    1 回复
  • 社区也是这样么?
    麻烦 F12 输入以下,然后复制 IDE 里面的代码块,然后点击页面任意位置 ctrl+v,把输出的 string 发我看看。

    document.addEventListener("paste", async(event)=>{
        const textHTML = event.clipboardData.getData("text/html");
        const textPlain = event.clipboardData.getData("text/plain");
        console.log(textHTML);
        console.log(textPlain)
    })
    

    代码块专门处理了一下,应该生成 ``` 包裹着才对

     // process copy from IDE
        const tempElement = document.createElement("div");
        tempElement.innerHTML = textHTML;
        const pres = tempElement.querySelectorAll("pre");
        if (pres.length === 1 && pres[0].className !== "vditor-textarea" && !pres[0].nextElementSibling
            && ((pres[0].previousElementSibling && pres[0].previousElementSibling.tagName === "META")
                || !pres[0].previousElementSibling)) {
            return "```\n" + (textPlain || textHTML) + "\n```";
        } else {
            return markdownStr;
        }
    
  • jeffjade 1 评论
    作者

    options.after 回调中,是推荐放置哪些内容呢?


    经过测试,初步断定为「时序」问题;预渲染,有发起 lute、 highlight 相关的请求,如果提前请求完毕,或者将下面这句代码,做一个延时,就不会出现 Lute、highlight is not defined 的问题了。我想,我应该熟读下最新的文档了。

    this.vditor = new Vditor('vditor', options)
    
    嗯。以前是同步请求,现在是异步的。所以需要
    Vanessa
  • 查看全部回帖