一人观点,难免片面和错误,欢迎讨论和进行斧正,: )
写在前面
早先使用ik8(netease类的后起之秀),博客中国、新浪博客、百度空间的时候觉得写博客其实这样也还不错:不用自己管理服务器,不用自己写博客程序,不用自己处理域名解析等,而且是免费的,还有基于平台的交流圈。
但是用着用着会发现:
- 域名不是自己想要的,文章的链接是数字或者随机字符串不好看、不好记。
- 发布后的文章会因为系统升级等情况,原始链接产生变更,影响收录结果。且使用三级或者四级域名后,权值比较低。
- 发布内容包含代码,展示不友好,或者有问题。
- 内容图文混杂的时候,图片展示方式死板,要么是一张张图『排着队』展示,打开时间长,还不容易找到感兴趣的图。
- 样式定义自由度越来越低,官方每次升级,以往的一些样式和代码都『失效』了。
- 当时很流行的背景音乐和flash不能自由使用。
- 评论没有或者缺少表情。
- 后来各种博客平台商业化严重或者陆续死亡,文章遗失问题严重。
总而言之一句话:带着枷锁跳舞,不自由;数据掌握在别人手上,安全感低。
那么怎么办呢,自建博客吧,毕竟工欲善其事,必先利其器。有的人会说,博客的重点是在文章,但是对我而言,在写博客的过程中根据不同的场景,实现不同的最佳方案或许才是满足感最高的事情。
前后端不分家的时期
这个时期,哪里有什么前端工程师、前后端开发,大家都是程序员。
前期主要是以纯静态页面为主、后期主要是用动态脚本混合输出静态资源(揉杂的内联脚本和样式)。
数据库的形式包括,MSSQL/MYSQL/SQLLITE/TXTDB/…
SHTML+SSI服务端包含,各种include模式的模板复用+简单的CRUD后台+系统环境配置就是一个完整的架构方案。
直到现在,你看到一些上了年纪的程序员和老网虫都还在使用很早以前的文本数据库或者HTML页面作为博客。(港澳台和教育网内的这类网站居多)
记得原来的部门leader@小马曾说:他应该算中国的第一批前端。(阿里吃掉中国雅虎,前端开发工程师的岗位首次出现在中国市场。)
在大家习惯把“前端”称呼为“前台”的时期,多数页面都是静态的,少数使用“动态页面”这个名词的网站会使用ASP/PHP/JSP,但是其实后两者占比不多。
值得一提的是,九城社区零几年版本就是PHP制品。
我入此道较晚,高中学着当时未曾蒙面的高中学长在梦游科技买了一年两三百的4线(实际双线)的虚拟空间就开始了。
恰逢PHP性能战大挫ASP,而且服务器没有授权费用,加上@张宴等大牛整合出了APMServ等环境,不需要按照O’reilly书上介绍冗杂的方案进行系统配置,一键就能启动Server。(asp netbox构建环境当然也简单,但是当时PHP潮流已经不可逆的开始了…)
sablog号称是当时最快的博客系统,作者对数据库表设计、db query、页面输出内容控制进行了大量思考,在多数博客系统没有使用静态化的时候,开始了静态化页面的方式。
它以及后来的sablog-x包含了现在多数博客需要的功能:归档、搜索、站点地图、自定义页面、自定义路由、RSS、pingback…
sablog的出现影响了许多人,当然,这里它的竞品:pjblog,oblog,zblog都对个人博客产生的比较积极的影响。
前后端初分的时代
这个时期的博客很少能再见到以纯静态页面为主的系统了,多数都是动态页面渲染页面结构,以及引入以文件为单位分离的前端资源。
由于ASP的程序越来越少,以及WP的火热,使用MYSQL作为数据库的人越来越多了。
这个时候动态脚本作为主导,出现了一大堆我们现在还在使用的功能,诸如:角色控制、用户投稿、订阅(包括邮件推送)、文章密码保护、积分下载、统计(下载计数、阅读计数、访问计数…),基于动态脚本的防盗链和盗用资源(类爬虫)、定时发布、水印签名、站外链提示等。
架构方案变成了主流是LAMP/WAMP+CMS类型的后台+具备模块化动态加载。
织梦、动易等CMS也客串了一阵多人博客系统(现在还能看到它们相关的功能…)
WordPress从1.X~2.X过度的时候不知不觉的火了起来,凭借出色的所见即所得编辑器(砍掉了最早的markdown支持),和RSS支持(atom/rss/rss2),相对丰富的插件主题库,以及低版本的环境需求(同类中PHP要求版本最低)等特性被大家广为接受,其中比较有趣的特性,包含多级的用户角色权限和推崇语义化的分享链接。
前端日益兴盛的时代
由于程序的生命周期的问题,早些年设计的程序系统多数是和当前时代的需求相吻合的。所以导致了要么功能跟不上需求,被用户抛弃,要么是急于整合功能,系统日渐臃肿。
这个时期的博客用户比以往任何时候都强调速度和资源利用率。
于是,很多原本是服务器做的事情,被挪到了前端。服务端开始大量接口化。前端开始讲究组织方式和构建方式。
架构方案和现在看起来很像,部分前后端分离,展示层和业务分离,页面结构和前端资源加载多数还由后端掌控。
各种渲染前端页面的结构、样式的活被前端接手过来,大家发觉JS和CSS可以让页面变的这么好玩,于是前端脚本和样式被未经思考就大量滥用在了站点上。
加上『雅虎军规』、『网站最佳实践』的肆意传播,多数人只是注重表面的方式,客户端的环境多样化,服务端的复杂度在前端环境下被放大了。
此时Bootstrap/pure/Semantic UI,一方面帮助了前端解决了一部分日益增多的工作量,一方面挖下了工程缺乏结构化和过于定制化大坑。
在发现并不是服务端响应快,上CDN或者分离前端资源就能带来最佳体验后,前端进一步进化了。
前端高速迭代的时代
前端复杂化越来越明显的时期,大家一方面为了降低复杂度,一方面为了更快的开发,框架和设计模式被大量的使用,同时,前端开始要求使用前端模板以及前端加载器来进行资源的管理,进一步和服务端做到权责分离。
后端方案相对变化不大,除了接口演化越来越细致,并且将一些纯文本接口替换为了restful或者伪restful的接口。
前端则多了推送、更加多样性的字体选择、合理的资源模块化使用、大量的CSS动画完全取代FLASH,CSS动画占比大于JS动画…
大量依赖jQuery的站点,对其插件不加以管理的堆砌式的滥用,样式也在多次迭代中大量冗余,后端输出模板不适应前端逻辑。
WordPress和Bootstrap继续受到追捧,直接和间接的推动了前端的发展:尤其是在网页字体、信息推送、三方平台整合、前端模块化、HTTPS、同构化开发、OOCSS、样式预(后)处理、CSS3动画特效…
WebFonts/IconFont技术日臻成熟,之前的Svg Font淡出了舞台。
前端出现了MV*模式框架、模块化工具和一系列构建工具的疯狂输出。
同时由于实时通信需求,和同构开发的美好夙愿,基于express/socket.io框架的node.js的全栈模式也进入了大家的视线内,ghost来了。
随后,ES6/ES7的新语法支持,更智能的前端脚手架和前端构建工具,甚至CI的支持和更高级的发布系统。
那么到底什么样的方案才适合当前的个人博客呢?