SimpleMarkdown - 一款简单的Markdown编辑器

源码地址: https://github.com/zhuangZhou/SimpleMarkdown

作者网站:http://hawkzz.com

简介

这是一款基于NodeJs开发的简单的Markdown编辑器,其UI是仿照简书的Markdown编辑器;主要功能:实时解析,实时保存,实时预览,全屏等

预览

技术栈

  • NodeJs
  • Express
  • Swig
  • Marked
  • highJs
  • Jquery

实时解析、保存

经常使用简书的Markdown编辑器书写博客,它的有点很明显,一是,可以实时保存,二是,可以实时解析;因为自己想做个个人网站,其中就有书写博客功能,考虑过使用已经目前很成熟的富文本编辑器,比如:ueditor编辑器;但是感觉这些编辑器都太过于庞大,于是,就有了自己写一个编辑器的念头,说干就干;研究了简书的Markdown编辑器的工作原理,它是怎么实现实时保存和解析的;然后开始了自己的构思。

想要实时保存,就需要不断的给后台传输数据,那么是以什么频率去给后台传输数据呢?以什么样的形式去保存呢,是直接保存在数据库,还是保存在一个文件里面呢?

首先,是第一个问题,既然是实时保存,所以我这里是以每输入一个字符,就开始实时保存,这样的一个缺点就是请求次数太多,如果各位有什么好建议,请拍砖;

然后,是第二个问题,我这里是通过把标题写在一个数组里(当然在实际项目中这是写在数据库里的,这里只是不想开数据库,所以使用数组),文章放在一个文件里,通过标题(或数据库标识)来查询文章;

下面为主要的NodeJs后台代码

router.post('/save', (req, res) => {
    //获取数据
    let title = req.body.title;
    let markdown = req.body.markdown;
    let change = Number.parseInt(req.body.change);

    let html = `# ${title} # \n ${markdown}`;

    fs.exists('./docs/' + title + '.md', (exists) => {
        console.log(exists);
        if (!exists) {
            console.log(change);
            if (change === 1) {
                let oldTitle = req.body.oldTitle;
                fs.unlink('./docs/' + oldTitle + '.md', (err) => {
                    if (err) {
                        return console.error(err);
                    }
                    titleArr.forEach((item, index) => {
                        if (item === oldTitle) {
                            titleArr.splice(index, 1, title);
                        }
                    })
                    console.log('删除成功!');
                });
            } else {
                titleArr.splice(0, 0, title);
                console.log(titleArr);
            }
        }
    });

    //写入文件
    let writeStream = fs.createWriteStream('./docs/' + title + '.md');
    writeStream.write(markdown);
    writeStream.end();

    writeStream.on('finish', () => {
        console.log('写入完成');
    });

    //传递数据
    let data = {};
    data.html = marked(html);
    res.json(data);
});

前台代码:

//实时保存解析文档
function transformMd() {
    var markdown = $('#editArea').val();
    var title = $('#markTitle').val();
    var oldTitle = $('#markTitle').attr('data-old');
    var change = 0;
    if (oldTitle != undefined && title != oldTitle) {
        change = 1;
    }
    $.post('/save', {
        markdown: markdown,
        title: title,
        oldTitle: oldTitle,
        change: change
    }, function (res) {
        $('.right').html(res.html);
        $('#markTitle').attr('data-old', title);
        $('pre code').each(function (i, block) {
            hljs.highlightBlock(block);
        });
    }, 'json');
}

后记

这篇博客只是介绍了核心功能,其余的感觉无需多介绍,需要了解的可以看源码,都有注释,多多谅解!!!

目前只是实现了新建文档和实时解析,实时保存以及一些基本功能,还有一些构思没有实现,比如:上传文档解析;敬请期待!!!

时间: 2024-10-02 11:32:34

SimpleMarkdown - 一款简单的Markdown编辑器的相关文章

10款流行的Markdown编辑器,总有一款适合你

摘要:作为一个开源人,如果你不会使用Markdown语法,那你就OUT了!Markdown 是 2004 年由 John Gruberis 设计和开发的纯文本格式的语法,非常的简单实用. 作为一个开源人,如果你不会使用Markdown语法,那你就OUT了!Markdown 是 2004 年由 John Gruberis 设计和开发的纯文本格式的语法,非常的简单实用. CSDN CODE平台的 帮助文档.项目README文件.文档项目甚至包括ISSUES和项目评论等都是支持Markdown语法的!

Typora ---一款简洁的Markdown编辑器

Typora BB in front 如果你是一个佛(lan)系(duo),内心文艺的程序员,并且你对其他Markdown编辑器的使用效果感觉不是很好的话,可以来了解一下该软件Typora. What's this? Typora是一款轻便简洁的Markdown编辑器,支持即时渲染技术,这也是与其他Markdown编辑器最显著的区别.重点是免费! 什么是及时渲染技术? 即时渲染技术使得你写Markdown就像是写Word文档一样流畅,不像其他编辑器的有工具栏. 其实也是最近刚刚入手,也不太了解这

markdown---两款实用的markdown编辑器(windows)

??闲的无聊,使用了很多markdown编辑器,包括MarkPad,Re Text, stackedit,MarkdownPad,小书匠等等,个人还是比较喜欢MarkdownPad和小书匠的,但是还是偏向MarkdownPad,尽管小书匠支持的标记特别多,像流程图,导入视频.附件.支持代码的行号.目录等等,这些MarkdownPad都是没有的,主要是MarddownPad使用起来比小书匠流畅多了,而且比较简洁,支持导出PDF,且保存链接,要是小书匠能够把导出的PDF的链接保存下来,这是一个很好的

使用反汇编破解 Windows 下Markdown 编辑器 MarkdownPad 2

MarkdownPad 是 Windows 平台下一款优秀的 Markdown 编辑器,本文简单介绍 Markdown 以及使用一种方法破解 MarkdownPad 使其升级到专业版.该方法仅限于教育用途,我不为滥用该方法导致的商业纠纷负责! Markdown 简介 Markdown 是一种轻量级标记语言,有着及其简单.易学易用的语法,任何人在几分钟之内都可以掌握其基本语法并用来写作,你可以在 这里 学习markdown的基本语法.其创始人 John Gruber 下面的话高度概括了 Markd

最新主流 Markdown 编辑器推荐

Markdown ,2004年由 John Gruberis 设计和开发,是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式,以下将介绍目前比较流行的一些 Markdown 编辑器(排名不分先后) 目录 - MarkdownPad - BookPad - 小书匠 - Typora - Visual Studio Code - Marxico - Sublime Text 3 - Mou - Atom - Smark - Haroopad - Cut

打造自己的Markdown编辑器

原文链接:  http://www.errdev.com/post/5/ Markdown以其简洁的语法赢得了广大程序猿的喜爱,搜了一下github上相关的web编辑器,星星比较多的 StackeditdillingerEpicEditor 前面两个是集成的编辑器,提供很多的功能,可是我想找一个能嵌入到当前web应用的,替换当前的WYSIWYG编辑器.只有后面一个是嵌入式的编辑器,但是试了一下提供的编辑功能随便不错,提供的API太少了,很多地方不能自定义. 还是自己来一发算了,这个也非常简单,因

Markdown编辑器:Typora

现在网上的Markdown有很多,各有各的特色,同时也有各自的缺点.比如有的传图片比较麻烦,有的导出pdf需要付费,有的数学公式编辑比较麻烦等等...... 而最近接触到Typora,发现这真是一款良心的Markdown编辑器,图片的上传很方便,而且能够导出pdf,写起文档来感觉很顺手. 官网链接:http://www.typora.io/ 相关链接:http://sspai.com/30292

这可能就是你苦苦寻找免费、高颜值、功能强大的 Markdown 编辑器(共5款)

本文作者 | HelloGitHub-小猪蹄 Markdown 是一个轻量级的标记语言,语法简单.容易上手,它深受程序员.博客主等人群的钟爱.随着越来越多的博客系统支持 Markdown,它也开始越来越流行.那么一个趁手的 Markdown 编辑器能够让你醉心于创作.专注于文字.行文如流水般丝滑. 下面这个 5 款编辑器各有特色,相信总有一款适合你.俗话说:"工欲善其事,必先利其器",快根据个人的需求挑选一款合适自己的 Markdown 编辑器吧! 1.Mark Text GitHub

CSDN markdown 编辑器 第二篇 markdown简单使用

第一篇简单介绍了markdown. 第一篇地址 第二篇主要会介绍不熟悉markdown语言的人如何使用CSDN新的编辑器.这里主要介绍图形编辑器.已经掌握的人请挪步. 前面几个都非常简单.例如对字体加粗和斜体. - 或者是对 [帐前卒专栏](http://chillyc.info) 加个链接.用![连接图标](http://img.blog.csdn.net/20150312221433385) - 再者就是加个图片:![图片图标](http://img.blog.csdn.net/201503