起因
开始写博客也有一段时间了,我这人就爱折腾,如果你的博客也希望在多平台发布,肯定是不希望带有水印特质的,同时,同样的内容拷贝多份也不是我们乐于见到的、为了能有效解决一次书写,多平台发布的问题,我进行了相关的探索尝试,虽然最终最终也不是完美方案,但有基本的问题得到了解决。
经过
编辑工具
搞程序的都偏向极客风,这点从各位开源大神的ReadMe.md就可以看出端倪,
Markdown是一种轻量级标记语言,排版语法简洁,让人们更多地关注内容本身而非排版。它使用易读易写的纯文本格式编写文档,可与HTML混编,可导出 HTML、PDF 以及本身的 .md 格式的文件。因简洁、高效、易读、易写,Markdown被大量使用,如Github、Wikipedia、简书等,
千万不要被「标记」、「语言」吓到,Markdown的语法十分简单,常用的标记符号不超过十个,用于日常写作记录绰绰有余,不到半小时就能完全掌握。
就是这十个不到的标记符号,却能让人 优雅地沉浸式记录,专注内容而不是纠结排版 ,达到「心中无尘,码字入神」的境界。
富文本编辑典型代表是word,从ms-doc加密格式到opendocxml格式的转变,一定程度上也是为了开放通用格式,因为本身富文本虽然支持的内容和形式更丰富,但风格很难统一控制,容易受到网页样式污染
markdown的编辑器很多,但是体验效果做的比较好的代表Typora,所见即所得编辑模式,很多人都习惯用它,最近突然收费运营,应了那句由简入奢易,从奢化简难,平台要生存理所应当,大众有选择也理所当然
如果老哥是搞开发的,有markdown编辑的需求,也需要Typora那种所见即所得效果,vditor是你需要的
图床
图床这个问题,被各位老司机博主用的出神入化,gitee被图床需要的博主已经搞的需要开启登录访问资源,其他一些如七牛、博客、github等等
这个问题原因是博客需要本地化存储,但图片也是本地化存储,用引用方式明显更便捷一些,于是博客便诞生了图床方案,另外就是编辑器本身有些不支持拷贝上传,或者本地化的图片没法上传到各大平台
多平台发布
多平台的问题如头条、简书、知乎、csdn、博客园、掘金等等,最理想的情况肯定就是写好了可以一键发布各大平台,简单又省心,但事实上,问题比想象的复杂,如果要有这项功能,网上也有相应的平台支持这种操作,以及相关本地化解决方案
我想说的是,有些要么太麻烦,要么不符合改造特质
- 比如:bloghelper
结果
bloghelper、writecnblog 属于技术化解决方案,好处在于可以改造定制扩展,我都尝试编译了,发现其效果并不是太理想
其他的诸如一文多发神器--ArtiPub&&OpenWrite 属于平台化方案,相当于一个管理后端专门去处理,至于会不会收费,你懂的
再有一些,就是借助现有的工具去窜连形成的整合方案,但怎么说,多多少少有点儿不太方便
那有没有一种把编辑、扩展可能都兼容的办法,我替你们找到了,如果你习惯用vscode,那这个东西很适合你
插件效果如下:
重要的是在满足编辑功能的同时,我们具备改造这个插件的能力,可以导出pdf,预览形式,支持拷贝,
- 平台发布博客,绝大多数支持拷贝上传
- 如果扩展改造增加一键发布的功能,我们只需要解决登录凭据、新建,发布的接口适应即可解决问题
- WriteCnblog 是一个理想型,但是博客园定制,而且同步那些功能,我觉的目前并不需要,各位老哥有兴趣可以参考结合
- 我采用的形式,是另存一份markdown,将本地链接替换为base64地址这种方式,目前可以粘贴使用,后面适配了接口,我们就无需再处理图床的问题。
async function replaceUrl(file){
/**
* 1.读取md文件
* 2.正则匹配图片路径
* 3.转换路径未base64
* 4.替换路径为base64
* 5.另存为新文件
*/
let content =await fs.readFileSync(file, 'utf8');
let uw=content.replace(/\!\[.*\]\((.*?)\)/g, function(word){
const path= word.match(/\!\[.*\]\((.*?)\)/)[1];
let base64= transBase64(path);
return word.replace(path,base64);
}
);
writeIfModified('./tmp.md',uw);
}
效果图如下:
未来
希望能够通过改造vscode的插件,解决一键发布的功能扩展,尽量能用一个工具解决发布的问题,初步的思路已得到验证,后续能够形成bloghelper那种方式,解决登录、发布的问题,即即可完满!
如果对老哥有帮助,点赞关注,下次不迷路幺!