这个问题我是知道的,以前也遇到过,只是这次持续的时间太长,估计至少得20天了,这个不能忍。

  对于这个问题的解决方式,我首先想到的是将文章迁移到掘金。只是想想掘金里那乱七八糟的广告,就打消了这个念头。而且,它万一也跟思否一样呢?那我又得重蹈覆辙。

  对于自建博客,我首先想到的场景是:我在本地创建了md文件,然后一键上传,便可以发布到线上,然后我就可以通过相应网址看见相应的博客。

  阿里云的oss:存储本地上传的博客和图片,供前端读取。oss 很便宜,我用了很久,一直没怎么花钱。

  Typora:md文件编辑器,在这里面,可以为图片指定一个相对的存放目录。

  我会将所有博客写在一个固定的目录中。一个主题的博客会有一个独立的文件夹,

  这个文件夹里可能会有多个与此主题相关的md,同时还会有一个images文件夹,用于存放md里的所有静态资源。如:

  先建立两个目录信息文件mds.json和st.json,默认为空数组,用于在后面存储文件信息;

  在main中,用Typora编辑器,按照一个文件夹一个主题的规则写博客,其中的图片链接可以自动指向同级的images文件夹;

  先获取main中的文件目录,与mds.json和st.json中的文件作对比,从而知道哪些文件是新的,哪些文件是已删除的。

  对新的文件要重新编译、打包和上传;对已删除的文件,要从本地的打包目录和oss端删除。

  最后,根据文件类型,将main中的文件目录更新到mds.json和st.json中。

  实现项目功能的主要文件是build.js,所以我们终点讲解build.js里的各种功能逻辑。

  getFiles() 获取目录中的所有文件信息,并根据文件类型,将其分为静态文件和md文件。其字段属性为:

  getRandom() 基于时间戳和随机数,获取一个基本不会重复的数值。

  bucketSt 存放静态资源的bucket配置参数,用于OSS用户端实例化

  setFiles() 再将md文件写入本地dist目录,在上传到oss,返回ms文件目录信息

  writeMenu() 将静态目录信息和md目录信息分别写入相应本地json文件中,并上传到oss

  getFilesState() 对新旧两种目录进行对比,返回目录状态信息,如所有已删除的文件、新增的文件、修改过的文件

  updateFiles() 将新増和修改过的文件写入本地(仅限md文件),并上传到oss

  deleteFiles() 将已删除的文件从本地出口(只针对md文件)中删除,从oss中删除

  updateFiles() 遍历文件目录,将新増和修改过的文件写入本地(仅限md文件),并上传到oss

  getUrls() 从md中获取所有图片文件的链接地址,并通过此链接获取此文件的oss端名称;

  compileMd() 解析md文件,将此文件的本地地址替换成oss端地址;

  deleteFiles() 遍历文件目录,将已删除的文件从本地出口(只针对md文件)中删除,从oss中删除

  compileMd() 解析md文件,将此文件的本地地址替换成oss端地址

  getOssName() 根据文件的本地路径,从相应目录中获取相应的oss路径

  getFile() 根据文件的本地路径,从相应目录中获取获取文件,并将此文件从目录中删除

  标题在点击的时候会跳到详情页,并在链接中拼接上标题字符串和此文章的唯一标志。

  在详情页中,根据首页传递的文章的唯一标志,从oss 端获取md文件,并解析成HTML,放到页面里。