这个“伪需求”是最近才想到的。

关于文章管理的想法,说来话长。我最初是在 CSDN 写技术文章,就用网页上的编辑器。后来在 CppBlog 写,用上了 Windows Live Write,一般在 Word 里面写好,再贴到 WLW 发布。再后来由于太忙了,一直停到现在。其中除了我懒,有两个客观原因,第一是中间好几年不搞 C++,那么在 CppBlog 上写非 C++ 的东西好像有点奇怪;第二是,服务端的东西真的没法每天下班自己玩呀,每天下班提心吊胆地看短信报警,也没哪个心情和时间再去重新开辟一个和白天工作内容迥异的学习场景维持下去。(佩服自己找借口的能力~)

前些年,Markdown 兴起,GitHub Pages 兴起,一众静态博客工具也蓬勃发展。Markdown 真的太适合用来写技术博客了,唯一不足是图片的处理。尽管如此,我还是花了很大的精力把以前所有的文章都转成了 Markdown。然后曾经一度也玩上了 GitHub Pages,用 Huge 生成静态博客。然而,博客的这东西我认为价值点和动力还是在于交流、碰撞,自己写自己看,跟存本地没啥区别——我的 GitHub Pages 几乎没人看……那时候也没写几篇,大概是 2018 年末到 2019 年初的时间。

半年前,我想到了近年来第一个“伪需求”。我嫌 Hugo 这种形态操作太罗嗦:先写 Markdown,再放到 source repo 的 post 里,提交一把;再生成静态页面,把 public 提交到 public repo。如果折腾模版啥的,就更复杂。我就想写 Markdown,写完提交一次 .md,能不能就看到呢?甚至干脆不提交,直接同步到服务端。这样,就得做一套动态系统(相对于 Hogo 的静态页面)去做这件事,而生成被浏览的数据的逻辑理论上跟 Hugo 之类的没本质区别。而一般个人博客这种文章量,根本不用纳入性能上的考量,因此做成动态是完全可操作的。看了下市面上没有此类的工具,于是就开搞了。我把它叫“NoteIsSite”,GitHub 地址 https://github.com/Streamlet/NoteIsSite,Demo 地址 https://note-is-site.streamlet.org/,然后把我所有的文章也用这个工具挂在主页下的一个子分类,见 https://www.streamlet.org/note/。关于这个,以后再开一篇文章细说。

到这里为止,写的过程代价很小了。但是刚才说了,博客这东西,对于我的动力很大一部分来自于评论、碰撞,还是需要发到公共平台上去的好。最近看到一个去年离职的前同事的博客 https://gclxry.com/,我惊叹于人家一直在坚持写。我想我是不是也要捡起来了,还是回归 CppBlog 吧。于是问题就来了。最近觉得最好用的 Markdown 编辑器是 typora,然后它没法发博客;以前的 WLW 虽然还能用,但毕竟不基于 Markdown。然而 typora 不开源,没法给他加一个“发布”功能了事。所以自己做做看?顺便入一下 Electron 的坑,以及前端的坑。

花了这么大篇幅把需求来源说完了。至于为什么选 Electron 呢?就是为了快点搞定……

上周学习了下 Electron 的 demo 以及打包流程:https://github.com/StreamletStudy/ElectronHelloWorld

然后正式用这个 repo:https://github.com/Streamlet/MarkdownBlog
现在功能就两个:编辑、发布。编辑不是所见即所得的,左边 Markdown,右边 HTML。发布要每次填 API 地址、账号,没做管理。整个流程通了,于是停下来写了这篇文章,用刚写的工具发布上来。

发现了 Electron 的一个坑,只要在页面里调用了 alert,页面上的焦点就有问题,输入框再也无法输入内容了。目前用 remote.dialog.* 替代。不知道有没有正解?

后面的规划:

  1. 搞清楚前端的语言体系,然后选择用原生 JS 还是它的衍生语言,把工程组织进一步完善
  2. 搞清楚 UI 复杂度,看要不要选择一个虚拟 DOM 方案
  3. 撸功能,账号管理等
  4. 撸功能,做成所见即所得
  5. 撸功能,支持图片粘贴、上传

再后面,先不规划,做完了再看。当前版本 Release:https://github.com/Streamlet/MarkdownBlog/releases/tag/publish_to_metaweblog_api

写一个 Markdown 博客客户端的更多相关文章

  1. 写markdown博客如何截图并快速上传到图床——记一个工具插件的实现

    1. 背景 写博客有一个自己的图床是不错的选择,如果不借助工具,在markdown博客中添加图片的步骤如下: 截取图片,保存到本地(得来回点对话框,选择保存路径,选择文件类型,输入文件名). 上传到图 ...

  2. 写markdown博客如何将截图快速上传到图床——记一个工具插件的实现(windows版 开源)

    打造一个上传图片到图床利器的插件(Mac版 开源)(2018-06-24 19:44) 更新于2018年2月 做了以下改动: 1.修复了一个bug,把服务器区域做成可配: 七牛有华北,华东,华南以及美 ...

  3. Dropplets – 极简的 Markdown 博客平台

    Dropplets 是一个简单的博客平台,专注于提供正是你在博客解决方案中需要的.当涉及到基础的博客功能,你真正想要做的是写和发表,而这就是 Dropplets 的过人之处.Dropplets 是一个 ...

  4. 我的第一篇Markdown博客

    我的第一篇Markdown博客 这是我第一次用Markdown写博客,发现还是比较好用的,加上Marsedit也支持了Markdown的博客预览,博客园也加了Markdown的格式支持,就更加方便了, ...

  5. 如何搭建一个独立博客——简明Github Pages与Hexo教程

    摘要:这是一篇很详尽的独立博客搭建教程,里面介绍了域名注册.DNS设置.github和Hexo设置等过程,这是我写得最长的一篇教程.我想将我搭建独立博客的过程在一篇文章中尽可能详细地写出来,希望能给后 ...

  6. OpenLiveWriter 这篇文章使用博客客户端撰写

    OpenLiveWriter是非常方便的博客客户端,起码相比在浏览器写博客多了一种选择.而且借助于MetaWeblog接口,可以很方便地同步博客文章到多个博客地址.本站cms.xlongwei.com ...

  7. 用 Flask 来写个轻博客 (33) — 使用 Flask-RESTful 来构建 RESTful API 之二

    Blog 项目源码:https://github.com/JmilkFan/JmilkFan-s-Blog 目录 目录 前文列表 扩展阅读 构建 RESTful Flask API 定义资源路由 格式 ...

  8. 用 Flask 来写个轻博客 (32) — 使用 Flask-RESTful 来构建 RESTful API 之一

    目录 目录 前文列表 扩展阅读 RESTful API REST 原则 无状态原则 面向资源 RESTful API 的优势 REST 约束 前文列表 用 Flask 来写个轻博客 (1) - 创建项 ...

  9. 用 Flask 来写个轻博客 (24) — 使用 Flask-Login 来保护应用安全

    Blog 项目源码:https://github.com/JmilkFan/JmilkFan-s-Blog 目录 目录 前文列表 扩展阅读 用户登录帐号 用户登录状态 Flask-Login 使用 F ...

  10. 用 Flask 来写个轻博客 (23) — 应用 OAuth 来实现 Facebook 第三方登录

    目录 目录 前文列表 扩展阅读 第三方登录流程 OAuth 应用 OAuth 实现 Facebook 第三方登录 实现效果 前文列表 用 Flask 来写个轻博客 (1) - 创建项目 用 Flask ...

随机推荐

  1. 《Vue3.x+TypeScript实践指南》已出版

    转眼回长沙快2年了,图书本在去年就已经完稿,因为疫情,一直耽搁了,直到这个月才出版!疫情之下,众生皆苦!感觉每天都是吃饭.睡觉.上班.做核酸! 图书介绍 为了紧跟技术潮流,该书聚焦于当下火的Vue3和 ...

  2. 集合元素的遍历操作,使用迭代器Iterator接口

    1.内部的方法:hasNext() 和 next() 推荐的方式: //hasNext():判断是否还有下一个元素while(iterator.hasNext()){ //next():①指针下移 ② ...

  3. 2022年整理最详细的java面试题、掌握这一套八股文、面试基础不成问题[吐血整理、纯手撸]

    这里是参考B站上的大佬做的面试题笔记.大家也可以去看视频讲解!!! 文章目录 1.面向对象 2.JDK.JRE.JVM区别和联系 3.==和equals 4.final 5.String .Strin ...

  4. 前端框架Vue------>第二天学习(1)插槽

    欢迎加入刚建立的社区:http://t.csdn.cn/Q52km 加入社区的好处: 1.专栏更加明确.便于学习 2.覆盖的知识点更多.便于发散学习 3.大家共同学习进步 3.不定时的发现金红包(不多 ...

  5. JUC(10)深入理解CAS和ABA

    文章目录 1.CAS 2.原子引用解决ABA问题,版本号.修改后,可以看到 1.CAS package com.cas; import java.util.concurrent.atomic.Atom ...

  6. django 生产环境部署手册

    Django 是 python 的 web 框架,以下是其部署到生产环境的详细步骤,包含 Apache 和 nginx 版本. 部署环境 操作系统:centeros7.3 数据库:MySQL5.6.5 ...

  7. while循环条件不成立却无法跳出死循环的问题

    在进入循环的时候,实际上是将A从内存加载到寄存器里面运行的,在整个循环中,A这个变量都只是在读取寄存器里面的值. 而当进入中断的时候,中断里面会从内存加载A到寄存器,修改完之后又存到内存里,然后退出中 ...

  8. JavaScript实现带省略号的分页

    1.实现功能 可以跳转上一页.下一页.数据过多省略号显示,点击省略号可以实现快速跳转. 纯js+html+css实现,引入js文件后再使用方法即可快速生成. 2.实现过程 2.1 html页面(ind ...

  9. HTTPS详解二

    前言 在上篇文章中,我已经为大家介绍了 HTTPS 的详细原理和通信流程,但总感觉少了点什么,应该是少了对安全层的针对性介绍,那么这篇文章就算是对HTTPS 详解一的补充吧.还记得这张图吧. HTTP ...

  10. MVC开发单元测试小工具 —— 搜寻还没写单元测试的方法

    方法比较笨,有更好的建议可以提. 写这个工具呢,因为要写单元测试,保证代码质量,方便修改维护.一切为了自己方便.当然这个算是个人开发的项目 1.MVC中控制器建立个基类(这个光明正大的抄袭的),控制往 ...