浅谈个人博客

前言

80、90后最早接触的个人博客应该是QQ空间了,可以自行装扮布置,当时主要用来做个人相册,也是当年非主流重要的基地。

大二的时候在CSDN上写过两篇技术文章,也用过云笔记,最终都放弃了,主要原因是是得绑定账号,并且每次查看都要打开客户端或者浏览器等。

大三用Jekyll搭建了个人博客,用了两个月就转战Hexo了,一直持续到现在。

回过头看,收获还是蛮多的,有水文,也有熬夜写的技术文章。内容总的来说更擅长记录总结,不擅长发表感悟,也不喜欢在文章中掺杂太多废话和闲聊,希望每一句都是干货,知识点尽可能简洁、清晰。

写作过程中最令人头疼的就是文章结构如何组织,一旦写的不好就会出现“上文xxx”,“下文xxx”。好的文章还是要不断打磨修改,还要定期更新避免过时。

因为最近打算搞团队能力建设,所以梳理了下博客相关的内容,也补充了解一些没用过的博客框架,带领大家入门折腾。

为什么你需要一个Blog?

如果此前有写些东西,那么博客可以帮你发布到互联网,让更多人能够看到。并且养成良好的写作习惯,提高效率。

如果此前未写过东西,可以思考下写作能带来的益处,每一篇文章都是自己积累的财富,也是一路成长的脚印。

  1. 知识积累沉淀:作为程序员有太多要学习的东西了,光靠记忆效率是很低的,需要一个专门的平台来归档、管理。便于复习和回顾。
  2. 偶发感悟,或者有开心的事、人生大事,苦于没有平台记录和分享。
  3. 能力提升:专业知识、写作表达、逻辑条理。
  4. 倒逼自己输出:例如有用户提问或者评论,会推动自己去更新内容。
  5. 紧跟互联网时代:就像当年大家都玩QQ空间,你不玩就OUT了。
  6. 从知识获取者转变为知识创作者、贡献者。
  7. 打造个人品牌,行业影响力,副业创收…
  8. 元宇宙时代每个人都应该建设自己的一亩三分地,和装修一样,有满满的成就感。
  9. 组织角度:可以作为团队培训资料,减少重复工作和踩坑。
  10. …

坏处嘛,除了需要投入时间精力外,也想不到其他的了。

  • Web1.0:用户只能查看内容
  • Web2.0:用户可以贡献内容,平台所有、平台控制、平台支配,平台化
  • Web3.0(元宇宙):用户贡献内容,用户所有、用户支配,去中心化

推荐阅读:2022 年了,聊聊我为什么还在写博客

可以写些什么?

博客内容可以是专业技术、美好记忆、心得感悟、晒娃撒狗粮、读书观影旅游分享、个人相册、个人音乐播放器等等。

关于技术文章,推荐发布行业通用知识,有参考价值,可供复习回顾。尽量避免记录性内容,比如环境搭建、解决问题等,很容易过时,并且难以复制。

注意个人隐私安全和公司保密协议,有些内容可以记录但是不要公开发布,例如

  1. 使用网名,不带真实个人信息。
  2. 不发布公司内部技术,例如公司特定的设计规范、配置项、命令行等。一方面不通用,另一方面可能涉及保密协议。
  3. 内容不带公司字样,可能会被公司爬虫检测到。

可以尝试给自己的博客做一层加密校验,给需要加密的文章做个标记或者分类

根据自己的想法划分了几个境界:

  • 初出茅庐:阅读+收藏网址,参与评论和提问、长期关注他人、付费阅读、付费下载
  • 小试牛刀(入门):注册博客平台账户,或者搭建了个人网站,在上面发布过文章
  • 持之以恒(活跃度):个人博客有较多输出,长期维护
  • 小有名气(知名度):有较多的点赞和关注,评论或者加好友互动,有人愿意为你的知识买单打赏
  • 传道授业(专业度):发布过系列知识、专题、开课
  • 声名远扬:出书,业内大佬

个人站点搭建方式

博客主要分为三种方式:

  1. 使用第三方博客平台(中心化、平台化):在三方平台创作和发布。
  2. 使用静态框架搭建,生成静态页面发布:本地编写Markdown,通过SSG工具转换成静态html,发布到静态网页托管服务。
  3. 使用动态框架搭建,自行部署平台服务,运行时请求数据库,实时生成html:在平台上创作和发布。

第三方博客平台本质也是动态框架,三方只是提供了托管服务,加了一些特色功能,并且在中间收取费用。

例如WordPress.org是开源的动态博客框架,WordPress.com、Bluehost、DreamHost、SiteGround等则是三方托管服务。

第三方博客平台 静态框架 动态框架
搜索引擎优化 便于SEO,例如百度搜索结果前排基本都是CSDN 需要自行优化、推广 需要自行优化、推广
技术门槛 几乎没有 有一定门槛,视框架和功能而定 有一定门槛,视框架和功能而定
成本 部分平台需要收费 GitHub Pages、Gitee Pages免费。自建空间需要云服务或者主机+域名费用 云服务或者主机+域名费用
编辑器 在线编辑 Markdown,可以嵌入HTML 在线富文本编辑,可以插入不同控件,所见即所得
数据存储 数据库系统,和账号绑定,有数据丢失、隐私泄漏的风险 文件系统,可以使用Git管理 数据库系统,不便于导出导入和迁移
可移植性 弱,大部分不支持导入导出 强,直接部署静态页面即可 弱,难以迁移数据到其他框架
主题样式 大多数无法选择,部分支持配置主题 主题丰富,可以定制布局和样式。 主题丰富,可以定制布局和样式。
环境配置 和账号绑定,网页在线编辑 新电脑需要重新配置环境 自建服务,部署在服务器
部署发布 在线发布,平台托管 GitHub Pages、Gitee Pages,或者自行购买云服务或者主机 自行购买云服务或者主机
自由度 低,开发者只能上传内容,平台审核 高 高,除了博客之外,还可以做论坛、电商等站点
域名 使用平台子域名 绑定自己的域名,便于记忆和宣传 绑定自己的域名,便于记忆和宣传
代表产品 CSDN、简书、掘金等 Hugo、Hexo、Jekyll、Nuxt等 WordPress、Typecho、Halo、Solo等
优点 无门槛、0成本、利于SEO 低成本、主题丰富 功能丰富、扩展性、交互能力强

从写作方式上划分

  1. 本地编写Markdown。采用文件系统进行管理
  2. 客户端或者网页在线编辑器,富文本编辑器。采用数据库系统进行管理

老实说自从学过Markdown之后,基本就不怎么用富文本编辑器了。

富文本编辑器需要特定的软件,特定的文件格式,写作过程中还要去修改样式、排版。使用Makrdown则可以顺畅的写完,专注于内容,不拘泥于编辑器,甚至可以使用vim、txt这些普通的文本编辑器。

从发布方式上划分

  1. 三方提供主机服务(平台):国内平台大部分免费,国外平台大部分需要付费,免费的功能受限。一般是使用子域名,也可以绑定自定义域名。
  2. 购买云服务器,自行搭建环境、配置域名、管理数据,同时可以开放给其他人使用。
  3. 购买本地主机,自行搭建环境、配置域名、管理数据,同时可以开放给其他人使用。
  4. 纯静态网页托管服务:GitHub Pages、Gitee Pages,一般是子域名,也可以绑定自定义域名。

个人站点搭建流程

不同框架自建站点的流程基本相同,只是内部引擎和实现不太一样:

  1. 确定博客框架,下载并安装对应的环境
  2. 配置主题模版,有需要的话可以安装插件,修改配置和样式。
  3. 写作:
    1. 动态框架:在客户端或者网页端写作,保存在数据库中,动态请求服务端数据进行显示
    2. 静态框架:使用Markdown写作,保存为md文件,最终生成静态html部署
  4. 管理文章中引用到图片:
    1. 可以通过相对路径引用,静态打包一起部署
    2. 可以创建图床,通过url链接引用。(可以直接放在GitHub中,如果嫌图片访问慢,可以使用云服务)
  5. 部署发布:如果没有发布需求,只想本地看看到上一步就可以了
    1. 免费的静态网页托管服务:GitHub Pages、Gitee Pages。只适用于SSG
    2. 购买云服务器,自行部署:阿里云、腾讯云等,可以结合Docker容器部署,使用服务器公网IP。
    3. 本地主机服务:可以使用树莓派作为小型服务器,可以结合Docker容器部署。外网访问需要自行申请公网IP。如果没有公网IP,可以使用内网穿透服务。
  6. 绑定域名:
    1. 使用子域名:部署到GitHub Pages、Gitee Pages、WordPress.com等服务,可以直接使用它们的子域名。
    2. 自行购买:阿里云、腾讯云都可以购买域名,根据不同框架说明绑定域名即可。
  7. 如果部署在国内的主机,需要备案

域名本身不需要备案,但需要实名认证。

域名指向国内的服务器需要备案,指向国外的服务器不需要备案。

GitHub Pages是国外主机,因此不需要备案。

选择合适的工具

没有最好的,只有最合适的。

可以从以下几个纬度对比:

  1. 成本:第三方博客<静态框架<动态框架。主机和云服务成本较高(一年几千),建议使用免费托管服务,除非网站访问量大,需要增加带宽
  2. 功能和可扩展性:第三方博客<静态框架<动态框架
  3. 上手难度:第三方博客<自建博客
  4. 主题和样式:第三方博客<自建博客,看个人喜好,静态和动态框架都有大量主题,够用就行
  5. 维护方式:文件系统 or 数据库系统
  6. 写作方式、发布方式。

尽可能用熟悉的或者现成的环境,例如Node、Python、PHP等

为什么不选择第三方平台?

第三方博客相比自建博客,存在很多痛点:

  1. 自由度低:样式固定,无法设置个性化主题
  2. 需要打开客户端或者网页端写作
  3. 账号登录,绑定手机号
  4. 大量的广告插入,消息推送
  5. 内容受平台管控和审核,评论限制,例如不允许转发到其他平台
  6. 关服整改:例如博客园整改
  7. 存在数据丢失、泄漏的风险
  8. 链接跳转会有安全提示,例如即将离开CSDN、掘金页面…
  9. 浏览门槛:例如CSDN很多精华文章和专栏都需要购买或者关注
  10. 文章质量参差不齐,浪里淘金:吐槽CSDN垃圾堆。一部分是由于面向大众,非程序员社区,一部分是爬虫、转载导致很多格式错乱。

静态网站的优势

静态网站相比动态网站有几点优势:

  1. 利于SEO
  2. 运行高效:纯静态网站可以通过CDN加速,动态网站还受限于服务端处理能力
  3. 更加安全:难以被攻击
  4. 部署简单,成本低廉:使用GitHub Pages、Gitee Pages免费托管
  5. 本地生成,实时预览

总结

对样式没有太大要求、图省事的、不确定是否能持续产出,推荐用第三方博客平台。

有一定追求和想法,想进一步打造个人品牌,推荐自建博客。希望便捷低成本的选择静态框架,希望拥有更多功能和玩法的选择动态框架

希望专注文档和内容的选择文档和知识库管理工具

话说回来,博客内容才是关键,样式那些花里胡哨的可有可无,当然设计精美的博客总是能更吸引人眼球。

有精力的话可以运营多平台,扩大影响力,通过一键同步脚本简化操作。

平台和工具汇总

第三方博客平台

使用较简单,注册账号,在网页上编辑文章即可。

国内主流博客平台:

  1. 稀土掘金:如其名,文章质量较高,前端技术较多
  2. CSDN:用来搜Bug和解决方案比较多,好的学习文章浪里淘金,同时充斥大量广告,资本化严重
  3. 简书:和CSDN类似,内容相对优质一些,广告稍微少点
  4. 博客园:国内较早的博客平台
  5. 51CTO:IT技术社区
  6. 开源中国:国内最大的开源社区
  7. 思否Segmentfault:技术问答为主
  8. …

小众社区:

  1. 腾讯云社区:云开发为主,大咖较多
  2. GitChat:技术博客社区
  3. 链滴
  4. 少数派
  5. 当然QQ空间、公司的KB也算一个社区
  6. …

国外也有很多平台,不过可能用着不太习惯,并且访问速度受限,大部分托管需要付费等,这里不做太多介绍:

动态博客框架

自行部署平台服务和动态页面,运行时请求数据库:在平台上创作和发布。使用和第三方博客平台类似,但是自由度更高。

  • WordPress.org、WordPress.org中文网:基于PHP,全球使用最广的博客系统,不仅用于博客,也用于在线业务
  • Halo:基于Java的开源建站和内容管理系统(CMS),默认使用H2 Database,运行后数据会保存在~/.halo下
  • Solo、入门文档:基于Java
  • Typecho:基于PHP
  • …

静态站点生成器(SSG)

开源的静态站点生成器,主要用于生成博客和文档。通过本地Markdown写作,Git版本管理,生成静态网页发布。

文档管理工具

SSG除了用作个人博客框架外,还可以做文档管理工具。不同于博客的随意性,文档管理工具更适合创作专题内容和系列文章。

  • 更专注于内容创作
  • 支持导出电子书
  • 主题模版较少,不像博客有很多个性化的需求

本质是一样的,只是主题风格偏向文档结构:

  • Hexo、Jekyll、Hugo等也有文档风格的主题,不过数量较少
  • GitBook
    • gitbook-cli:一个基于Node的命令行工具,用于生成静态网页,可以托管到GitPages,支持本地运行预览。相比gitbook.com更加轻量,可惜已经不再维护,重心从开源工具转向商业化产品。
    • gitbook.com:一个写作平台,发布到gitbook子域名,例如https://afauria.gitbook.io/,优点是可以GitHub仓库同步。缺点是国内访问慢。
  • Docusaurus:Facebook出品,基于React,有中文文档
  • VuePress:基于Vue,有中文文档
  • Docsify:不会静态生成html,而是运行时解析markdown渲染。只需要一个单页应用,对搜索引擎不太友好,有中文文档。
  • MkDocs:基于Python
    • 主题:默认有两套,还有一些三方的主题
  • Sphinx:基于Python,官网是真的丑
  • …

玩Python的感觉审美都比较传统,没有前端的玩的花

Docusaurus和VuePress配置相对复杂一些,需要懂一些Vue和React基本概念,Docsify相对更简洁易用

比较特殊的是Docsify,不属于上文提到的动态框架和静态框架,而是JS运行时解析markdown渲染,本质是一个单页应用。

  1. 动态框架:使用动态网页语言开发和部署,例如JSP、PHP等,在后台实时生成静态页面返回给浏览器。
  2. 静态工具:本地生成html静态页面,直接发布。
  3. JS运行时解析:发布html页面,浏览器执行JS脚本,请求文档和数据进行渲染。

静态页面不代表不能请求数据,可以通过ajax等技术去请求后端,局部刷新。

三方工具

上面提到的都是建站相关的工具,如果只想做知识归档,也可以用云笔记、云文档等。一般是客户端或者网页端在线写作,部分支持导出电子书。相比博客平台,笔记和云文档私密性较高,不会自动公开,也不会被搜索引擎索引。

这类软件大多数还添加了团队协作相关的功能、使得这些工具不那么纯粹。并且免费版功能受限,专业版都要收费。

  • 看云:电子书阅读和创作平台,可以设置付费,支持导出电子书。已迁移到顶想云知识管理。
  • 语雀:文档与知识库工具,写作体验好,功能丰富,包括文档、表格、笔记、待办、团队协作、项目管理等。支持导出电子书。
  • 各种云笔记工具:印象笔记、有道云笔记、Notion等。
  • KB、Tower、WPS、Read the Docs等在线文档、协作、知识库工具

结语

本文介绍了几种博客搭建的方式,可以明显看到个人倾向是静态框架。没有介绍具体的搭建步骤,官方文档写的更好。

我个人用的是Hexo+GitHub Pages+自定义域名,平常用Markdown写作,使用Git管理源文件,写完一键发布。

电子书使用的是GitBook,主要用来构建知识体系。

注:hexo需要新版本node,gitbook-cli只能通过旧版本node运行,因此无法共存。

使用n管理node版本:使用hexo时切换到n node/14.17.6,使用gitbook-cli时切换到n node/10.24.0

基本没有做推广和运营,导致曝光率不高,后续可能会同步到其他平台,提高曝光率,当然创作水平也有待提升。

TODO:

  • 由于GitBook已经不再维护,计划迁移到其他知识库工具。
  • 一键发布多平台脚本,参考写作助手
  • 文章加密访问,权限校验

参考资料: