博客园文章编辑器5.0版本发布(markdown版)

注意:使用本软件前,需先在博客园后台设置默认编辑器为markdown

开篇

废话少说,先上界面图片:


10月25日,我发布了博客园文章编辑器的4.0版本,得到了很多朋友的支持,

(后来我自己发现了一些问题,于是偷偷发了博客园文章编辑器的4.0.1版本,也没通知大家,不过好在有自动升级功能)

当时有很多朋友问我,这个工具支持不支持markdown,

我觉得写markdown的人还是挺多的,

调查了博客园确实支持markdown编辑器,

而且我开发了markdown的编辑器,对于那些使用HTML富文本编辑器的用户来说,也很容易上手,没太大改变,

还能使他们通过我的编辑器学习一点markdown的语法知识,何乐而不为呢?!

调研

说实话,我确实低估了开发这个东西的难度

本打算到github上随便拉一个来,

嵌到nwjs里去就可以了,

然而看了几个高分项目,都不合我意。

(不过,说真心话还是要感谢这些项目,我写这个工具参考了很多这些开源项目的源码)

我觉得这个项目最主要的难点是:

  • 找一个合适的编辑器
  • 编辑窗口与预览窗口滚动条同步
  • 和博客园官网通信通道打通

好在这些难点我都克服了

现在你看到的东西,就是这一阵子断断续续努力的成果

功能

这里罗列的是所有的我觉得重要的功能

  • 两栏布局,左边栏编写markdown内容,右边栏实时预览;
  • 左右两边栏滚动条同步滚动
  • 允许用户拖拽调整左右两边栏宽度
  • 支持最基本的markdown语法(链接、表格、标题、加粗、斜体、引用、有序无序列表,代码、横线等)
  • 博客登录(引入博客园的登录画面,使用官方提供的登录机制)
  • 检索历史文章(可以检索到你博客园内所有的随笔文章,支持分页)
  • 修改文章(你博客园内所有的历史随笔文章,都可以用此工具编辑修改)
  • 新增文章(从无到有撰写一篇新的随笔文章,默认保存为草稿)
  • 截图工具截图后直接黏贴到编辑器中(图片保存在博客园的服务器上)
  • 纯客户端,直接与博客园服务端通信
  • 纯绿色版,不需要安装,没有额外的服务,体积更小;
  • 自动升级功能(我发布新版本之后,会提示您升级);
  • 最最关键的还是开源!(照着这个代码写个淘宝下单器之类的东西,简直易如反掌)
  • 相对于上一个版本,做了一些UI/UE美化工作;

开源

开源地址:https://gitee.com/xland/cnblogs

下载地址:https://gitee.com/xland/cnblogs/releases

支持

强烈希望大家能给个star;

这让我知道你在用;

这让我有动力继续做一些对大家有用的东西;

关键源码

第一段代码是用于控制滚动条同步滚动的:

var editorScroll = function () {
                setTimeout(function () {
                    if (rightScrolling) {
                        return;
                    }
                    var scrollInfo = editor.getScrollInfo();
                    var lineNumber = editor.lineAtHeight(scrollInfo.top, 'local');
                    var range = editor.getRange({ line: 0, ch: null }, { line: lineNumber, ch: null });
                    var parser = new DOMParser();
                    var doc = parser.parseFromString(marked(range), 'text/html');
                    var topLineIndex = doc.body.querySelectorAll('p, h1, h2, h3, h4, h5, h6, li, pre, blockquote, hr, table').length;
                    var eles = document.getElementById("right").querySelectorAll('p, h1, h2, h3, h4, h5, h6, li, pre, blockquote, hr, table');
                    var scTop = eles[topLineIndex].offsetTop;
                    $(".right").scrollTop(scTop);
                }, 800)
            }
editor.on("scroll", editorScroll);

第二段代码,是用于插入markdown特有语法符号的

var wrapWidth = function (start, end) {
            if (!end) {
                end = start;
            }
            var arr = editor.doc.getSelections();
            var result = [];
            arr.forEach(item => {
                var tempArr = item.split('\n');
                for (var i = 0; i < tempArr.length; i++) {
                    if (tempArr[i]) {
                        tempArr[i] = start + tempArr[i] + end;
                    }
                }
                result.push(tempArr.join('\n'));
            })
            editor.doc.replaceSelections(result);
        };
时间: 2024-10-25 23:16:44

博客园文章编辑器5.0版本发布(markdown版)的相关文章

【开源】博客园文章编辑器4.0版发布

源起 最近个人时间多起来了: 于是打算持续写一点东西: 前面写了两篇关于riot.js的东西: 被博客园的领导移出首页了: 原因之一是排版不整齐: 确实是不整齐,这我认, 然而,我自己可是博客园文章编辑器的作者啊, 而且持续写了三版了,从1.0.0写到3.0.0: 而且有很多园友也在用我的编辑器写博客: (陆续也有人在问我这个工具的下载地址,源码的问题:) 我自己咋就排班不好文章了呢? 于是翻出以前的工具代码, 回顾了一下,发现各个版本都还有很多问题没解决掉: 于是决定大规模重构一遍: 说白了就

博客园文章编辑器【客户端应用程序】V2.0.0发布,命名为51cnblogs

2015-6-16傍晚:说明 替换了一个关键类库,减小了文件的体积 改变了窗口的默认大小 改变了右侧菜单的宽度 下载地址:http://pan.baidu.com/s/1sjqjLVn 注意1: 当你新写完一篇博客之后,如果你点两次提交,博客园后台将创建两篇相同的博客 建议你点一次提交,然后再点一次获取,这样就可以修改这篇博客了 注意2: 这将是这个工具以这种形态的最后一次更新, 下次更新就会换一种形式了! 2015-6-14凌晨:说明 又修复了一些BUG 重新编译了代码 做了提升性能的工作 做

博客园文章编辑器【客户端应用程序】V3.0.0发布

这个程序之前的2.0.0版本和1.0.0版本都是通过MetaWeblog的接口写的 (2.0.0版本:http://www.cnblogs.com/liulun/p/4572822.html) (1.0.0版本:http://www.cnblogs.com/liulun/p/4516625.html) 这个接口又难用效率又低,而且还不完善,有些能力根本就提供不出来! 所以这两个版本的程序是有缺陷的,后来我也没怎么更新 (比如:只能修改最近一篇草稿,如果不重启一下程序,只要点保存,就会把文章保存多

微信小程序实现博客园文章阅读功能

在微信小程序开发中,我们可以根据不同的业务场景,开发不同的业务应用,可以基于自身域名服务接口,也可以基于第三方的域名接口进行处理(如果被禁用除外),本篇随笔介绍使用小程序来实现我博客(http://wuhuacong.cnblogs.com)的文章阅读功能,这个小程序主要用来介绍使用介绍基于Javascript的正则表达式的处理应用,和常规在C#里面使用正则表达式有一些差异,因此可以作为后续使用正则表达式处理业务数据的一个练兵吧. 1.Request接口合法域名配置 一般情况下,我们知道微信的R

博客园样式漫谈——从0到1改变你的博客风格!

之前也有很多人写过这个话题的博客了,但是我觉得大家都千篇一律--贴上一堆CSS的代码,对于新手来说,可能直接拷贝过去CSS代码,能改变下博客的样式,但是知其然不知其所以然,想要自己修改样式,仍然无从下手. 本篇就通过博客布局.CSS基本的方法.JQuery的使用.调试技巧.响应式布局扩展 等几个方面讲述下修改博客样式的经验. 博客布局 博客园的前端结构很规整,因此基本上所有的博客都是一样的.大致可以如下面的Html结构所示: <html> <header> 1 默认的样式文件 2

小技巧:如何在(博客园)TinyMCE编辑器模式下同时插入Flash和Sliverlight以及代码运行框

如标题,已经知道的同学们就不用往下看了,以免浪费时间,本文内容是为博客园新手准备的.   众所周知,博客园发布博文时提供了二种html编辑器:CuteEditor 和 TinyMCE.(其实还有一种纯文本方式,不过很少有用人它,本文就不讨论它了)   TinyMCE相对在代码着色方面更出色,排版出来的文章也更好看,所以博客园推荐大家使用它,但是这东西有一个致命的缺点:如果用它直接插入Sliverlight(Xap),保存后会自动识别为Flash,这令银光侠们苦恼不已,昨天我向博客园团队反馈了,得

微信快速开发框架(五)-- 利用快速开发框架,快速搭建微信浏览博客园首页文章

这几天接连发布了<快速开发微信公众平台框架---简介>和<体验微信公众平台快速开发框架>几篇关于微信平台的文章,不过反响一般,可能需求不是很多吧.闲来无事,还是继续改造一下这个框架. 今天更新了框架代码,听取了 @RMay 的建议,加入了一个信息中间件,用来处理xelement,避免了重复解析,所以所有接口都更改了下.此次更新如下: 1.增加信息中间件MiddleMessage 2.更改了接口参数类型,把原来的XElement都改成了MiddleMessage 3.删除了Demo项

在Web微信应用中使用博客园RSS以及Quartz.NET实现博客文章内容的定期推送功能

本篇随笔介绍在Web微信应用中使用博客园RSS以及Quartz.NET实现博客文章内容的定期推送功能,首先对Quartz.NET进行一个简单的介绍和代码分析,掌握对作业调度的处理,然后对博客园RSS内容的处理如何获取,并结合微信消息的群发接口进行内容的发送,从而构建了一个在Web应用中利用作业调度来进行消息发送的业务模型. Quartz.NET是一个开源的作业调度框架,非常适合在平时的工作中,定时轮询数据库同步,定时邮件通知,定时处理数据等. Quartz.NET允许开发人员根据时间间隔(或天)

博客园小技巧

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢!   在博客园写博的半年中,我有时会纠结于一些诸如写作格式和显示效果之类的小问题.我想任何一个热衷于在这里写博客的人都可能会遇到类似的问题,所以就把自己遇到的一些状况和解决方法列出来,以便交流. 在博客园看到不少很绚的博客页面,我很想知道都是怎么实现的.:-) 希望大家不要客气,在评论区留下诀窍.谢谢!   编辑器 下面是博客园的编辑器界面: 博客园编辑器界面 1. 查询HTML