经过一段时间的折腾,实践了各种方案,终于把博客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 学长。