经过一段时间的折腾,实践了各种方案,终于把博客fix.moe的第一个能看的版本 release 出来了。尽管只有最基础的一些功能,UI做得也略丑,但还是值得记念的。
这里我将简单分享一下建站的经过和一些使用的方案。
经过
直到上学期初,对于Web开发我还处于纯小白的状态。被刚结束的第二届中国高校计算机大赛-移动应用创新赛掏空身体后,决定暂缓对iOS开发的继续钻研,于是在较长一段时间里我在技术方面都处于走马观花的状态。直到有一天看到前辈们开发的基于Web的各种小游戏,都说H5相比App是先进生产力,即开始对其产生兴趣。经过一番学习,不满足于 2048小游戏 的我对个人博客有了企划。
以此为契机,在日常进行的博客开发之外,我还买了域名和服务器,对Linux操作系统有了全新的认识,折腾了各种命令、研究了Apache、Nginx、Docker等。由于平时还有学业任务和一些琐碎的事务,整个开发过程断断续续。
开发过程
方案的进化
- 纯静态
- WordPress/Hexo
- Node.js + EJS 模版引擎
- Express.js + HTML5/CSS/JavaScript
到了寒假,时间变得充裕,开发过程有了新的进展。我接触并对比了前端三大框架React、Vue和Angular,偏爱Vue的组件化和简单性,决定用它在之前方案的基础上进行重构。这里赞同某人说的一句话:博客不就是拿来重构的吗hhhh。
最终方案
- Nuxt.js(Vue.js) + Express.js(Node.js) + MongoDB
方案优势
NoSQL 的使用之 MongoDB
说实话,MySQL属实太让我头痛了。。对于博客这种不需要太多业务逻辑的存储,NoSQL它不香吗?MongoDB从部署、使用到备份都非常方便,大大节省了时间成本。我甚至没用Mongoose框架,对增删改查等基本操作进行封装已经足够应对博客的所有任务要求。
为什么选择使用 Nuxt.js
SPA指 Single Page Application (单页应用),是目前主流的,基于CSR(Client Side Rending),但是存在一些不利于内容呈现型站点的缺陷,例如:
- 页面体积大
- 不利于 SEO 优化
- 异步获取数据,搜索引擎难以抓到页面内容
而Nuxt.js是基于Vue.js的SSR(Server Side Rending)框架,可以在牺牲部分服务器性能的同时获得以下优势:
- SEO 优化
- 客户端性能理想
- 传统方式渲染 DOM 消耗性能
- 首屏渲染快(针对大型应用)
- SSR 是将渲染好数据的 HTML 返回客户端,所以客户端不用在向服务器发起异步请求来填充数据,这也同时有利于网络缓慢的用户
除此之外,Nuxt.js还可以通过 nuxt generate 这样的命令生成静态网页。
对于我个人而言,使用Nuxt.js还有一些其他优势:
Ajax请求不会过于直观Nuxt.js提供了Nuxt/Express模版,支持和Express框架一起配合使用,无需新建项目来写后端
综上所述,何乐而不为呢?
写在最后
该博客今后视完成情况可能开源。
感谢一路在背后给予技术指点的 Hawkins Zhao 学长。