Nboat4开发计划

Neboer还是无法忘记自己是一个Web开发者的事实。所以,终于,他做出了决定——开发Nboat4。Nboat这个博客系列即将迎来又一次更新。当然,本文所讲的所有内容都尚处在画饼阶段,还没有落实在实际的开发工作中。(画饼文)

Neboer's blog isn't only about technique

Neboer的博客中有一条标语,大概意思是,Neboer的博客不仅仅与科技相关。但自从2020年8月Neboer发布第一篇文章以来(转眼过去了近三年的时间),这里面发布的和“科技”无关的文章少之又少,除了PCR的那篇、祝大家新年快乐和《感受夏日迎面的风》(孩子被热傻了的时候瞎写的),剩下的博客不是在扯开源软件,就是在碰瓷热点(比如FLoC的那篇),介绍技术折腾之类的,感觉完全就是Nerd的风格,这不行。

其实Neboer也想写一些亲民的文章,我想写文章去狠狠的吹一些电影和美剧,想写文章教教大家如何隐身登录LOL,想给大家说说我是怎么折腾同文输入法的,想说说Google Chrome即将强制新插件使用的Manifest3是如何坑人的;想写文章告诉大家我是如何给b站的网页端播放器添加了一个截图按钮的……但我总希望把我折腾的过程详细的描述下来,而不仅仅是让大家简单明白如何操作,更重要的——告诉大家操作的原理,这也很符合开源开发的精神,因为一旦出了问题,人们会很容易的找出出错的地方,并加以改正。但编写这种文章相当耗费时间精力,我的那篇“别看我的屏幕”文章,消耗了我整整两天的时间,不断在屏幕前面对着电脑打字打代码,并且我这个人工作记忆不强,很多东西需要记备忘,然后再把内容组织起来串成文章,还要避免在写的过程中长篇大论啰嗦过头……但总觉得写着写着人的精神就飞了,放飞自我的后果就是一大坨文字堆在段落里,虽然每个字都是方方正正的中文汉字,但让看的人陷入了内容泥潭,不得要领。最主要的——枯燥的技术文章很难写得生动多少,估计能老老实实看完的人都不是很多。因为中国法律对用户创建内容的相关限制,我也不敢在Nboat3中开放评论,虽然网站的访问者寥寥,但由于NerChat!的成功有些超出我的预期,访问网站的人数有所增加,而我还没想好有什么好的方法收集大家的意见,我个人觉得朴素的加个点赞按钮就可以了。

Ne咕bo咕er

Neboer其实是个挺勤快的开发者(草),不知道是不是NerChat!的维护工作使我分心了,还是因为最近经历的烦心事有点多,总之就是很久没有写文章,其实这也让我自己很不舒服。我会尽快把新文章安排上,一边编写这个新网站,一边聊聊一些我认为还挺有意思的事情。

我知道你们也发现了,

Neboer已经有六个月没发新文章了!

就像上面所说,我还是有很多可以讲的东西的,但是md,现在感觉很难再有那种抱着键盘爽打一天文章的心情了。就连这篇文章也是在晚上困得不行的时候硬挠出来的。我倒是有很多空闲时间,但是都这么白白浪费掉了——既没有用来写代码,也没有用来写文章。这篇文章也是简单水一篇,没有什么实际的价值,最大的作用还是让我一边写一边获得一些关于Nboat4开发的思路。不过随着Neboer的近况逐渐好转起来,我相信未来肯定还会有更多的时间来从事这份我热爱的事业的。如果大家有什么想和我聊的,欢迎上NerChat!找我哦。

Neboer不更新文章,其实不能说成是Neboer创造力枯竭,说实话,生活里能写的东西其实有不少,随便拿一个有意思的问题水水就是一篇我自觉得还能看得过去的文章;也不是因为我写的东西没有人看,从Google提供的站点访问数据来看,实际访问的人数还是不少的,一些文章的访问量甚至一直在增加。能阻止我更新的更深层的原因可能还是我老了,不中用了,确实有点整不动活了。我承认离开校园环境会让人的创造力大幅下降,感觉整个人一下子变老了许多。虽然说未来类似的情况能有所改观,但是就好像疫情一样——很多事情虽然可以好转,但确实已经回不去了。

Nboat4中将有的修改

  1. 夜间主题

    neboer.site是一个内容性远大于观赏性的网站,所以这次更新主视觉变化应该不大,但是会增加一些很实用的东西,比如这个夜间主题。

  2. 柔和过渡

    页面一旦加载完成便不再进行动画,在切换页面的时候提供一些CSS动画,会显得切换过程不那么生硬。

  3. 使用tailwindcss组件框架

    Bootstrap是不错的组件库,但感觉拿bs设计个人主页略显老气,这次换个新框架是不是能带来不一样的视觉效果呢?而且tailwindcss提供的CSS写法确实很不一样,不知道这次选的组件库能不能带来很好的开发体验

  4. 优化Markdown显示效果,代码高亮,字体优化,提供和现代Markdown内容网站相似的前端特性

    加点视觉元素在主页,在不增加用户访问带宽的情况下尽力提升浏览体验,要不只是平实的页面内容实在没有观赏性。主要通过自定义CSS等方法实现。

  5. 优化移动端页码显示和跳转

    这个不用说了,移动端明明页面够宽都不能做到整宽度显示切换页码的框。这次这个页码导航要重新设计一下。

  6. 在阅读博文时,显示可关闭的浮动导航大纲

    这个可以让博客的段落更加鲜明。并且易于定位。

  7. 取消大博文的概念

    我们在博客标签上下了功夫,就不需要强行把一些博客文章整合在一起了。

  8. 编辑博文的功能统一放在后台

    方便管理。可以方便的直接修改博文的所有属性。

  9. 博客后台数据统计功能,可以展示博文访问情况,代替编辑功能。

    这个不用说了,给网站增加经典的访客数据分析页,供站长查看用户最喜欢哪个文章等等的信息。

  10. 博文版本控制功能,可以记录每个修改的版本,类似wiki。每次更新新文章版本,可以提交一段“摘要信息”,简单说说这次修改了哪些内容。

    涉及到版本控制的内容在后面会讲如何实现。

  11. 使用Nuxt新版框架开发前端,SQLite做数据库,后端可以用一些新的框架,没必要死磕express。

    说的很对,全力支持。但其实也不是用SQLite做数据库就完了,根据刚才说的,肯定还要存储很多非文本的内容。存储非文本内容的最好方法就是文件系统,所以我们需要做很多和文件系统有关的工作。

  12. 留言墙也支持增删查改,然后每个博客版本也可以增删查改。

    这个不用多说,关于版本控制的内容在后面讨论。

  13. 用户可以按创建时间、修改时间、阅读量等信息来排序博文。

    博文搜索和排序是两个很重要的功能。虽然Nboat3里并没有多少文章,但这么多年积累下来的文章数量其实也不是太少了,完全可以用来做一个分类系统了。

  14. 用户可以用标签、内容、标题里的内容来搜索博文。

    搜索和排序,搜索的位置可以是全文搜索、标签搜索、文章内容搜索之类的。

  15. 每篇博客不再只是一篇文章。“博文”是由一系列文件组成的,里面可以有图片和视频等静态内容。在上传博文的时候,需要把博文中的所有文件一并上传。对每篇文章,都必须提供一个index.html和index.md,前者是需要渲染的HTML文档内容,后者是文章的源代码。这些内容可以很轻易的打包下载,也可以很轻易的上传和保存。这里存在一些关于版本控制的问题,会在后面的章节里探讨。

  16. 博客链接优化,URL不再是没有意义的字符串哈希值,而是直接以标题的形式保存内容。

    这个设计会提高URL的可读性。但是可能需要在上传的时候就提供西文标题。

  17. 完全使用Typora风格的Markdown编写方式及基础样式。

    Typora并不完全符合Commonmark标准,但是我认为Typora提供了很统一的编写和渲染方法,是一个不错的软件。(可惜不是开源软件)

    Typora提供的Markdown文档编写能力确实是一流的,目前社区中开发的所有开源Markdown编写软件,还没有能与Typora相媲美的替代品。

    Typora生成的Markdown文档可以通过类似TyporaParser的方式直接在服务器端转换成HTML文档。我们强制要求提供Markdown源代码并针对每份源码都生成对应的HTML内容。

Nboat4中还可能添加更多修改,就不在这里一一列出来了。

版本控制

需要注意的点:

  • 博文的英文标题也是博文的唯一ID,唯一对应了一篇文章。这个ID所使用的字符必须是URL合规的,同时它也可以直接在文件系统中作为文件夹的名字而存在。
  • 博文的Markdown源代码必须一一对应其输出的HTML文件。HTML与Markdown源码必须保持解析的关系。
  • 版本控制只负责存储markdown源代码和生成的HTML内容,不用来存储其他的文件。其余文件如果想要更新,直接在数据库里放出新版本就可以。

创建博文后,系统会生成一个以博文的ID命名的文件夹,这个文件夹里面包含了博文使用到的所有媒体文件,比如图片、视频等等。但博文的markdown源码和HTML文件并不保存在文件系统里。这些内容保存在数据库中,数据库还记录了它们的各个版本。

这样,每篇文章的每个版本都可以被保存下来,不需要在文章中添加额外的“更新说明”,这个功能可以直接集成进Nboat4中。在方便操作的同时鼓励站长多修改之前的博文,同时大家也可以看到一篇文章是如何被编写出来的。