使用 Next.js 重写博客框架
blog
12/14/2019
7/26/2019

如果你看过我之前的博客的代码,你应该会知道我的博客虽然使用了 Vue.js 这样的前端框架,但我仅仅用了它很基础的功能。我并没有采用 vue-cli 生成的模板,而是仅仅把 Vue 用 Webpack 加载到 JS 里,然后在 HTML 中把 bundle 后的 JS 用 <script> 标签加载出来,再把 HTML 文件作为模板,使用 Python 的 Jinja2 模板引擎将各数据填入模板来生成各个页面。

而随着前端的发展,SPA(单页应用)出现了。单页应用在切换页面时不需要像传统页面那样整个重新加载一个完整的网页;而是使用路由(routing)技术,切换页面时只需要用 XMLHttpRequest 加载一点点数据,然后操作 DOM 将页面显示的内容改为数据就好了。许许多多的前端框架如 React、Vue、Angular 就是为此设计的。

既然有这样的好处,为什么我不把博客框架写成 SPA,而是用老掉牙的模板引擎来生成呢?原因在于 我太菜了不会写 我希望我的博客能被各种各样的用户访问。直接使用前端框架写出来的 SPA 的 HTML 入口往往不包含页面内容,需要在浏览器运行 JavaScript 操作 DOM 后才给页面加上了内容,如果关闭 JavaScript,页面就只会显示一个 You need to enable JavaScript to run this app.。虽然很少有人会关闭 JavaScript,但总有人出于各种各样的考虑这么做:有人认为网页应该是一个文档,应该是用来浏览的而不是用来交互的;有人为了安全、担心 Cookies 泄漏而安装了 NoScript 插件;有人不喜欢过于复杂的现代浏览器,使用一些简单的、只能识别 HTML 的浏览器(如 w3m)。

我一直认为,可定制性是 “自由” 的一个基本内涵。所以我希望我的网页就算关闭 JavaScript 也能维持一些基本的功能。

林姆蒂克
blog
4/9/2019
4/8/2019

很久很久以前,雪山上居住着一个精灵,它的全身都由霜、雪构成。人类刚开始出现、炊烟第一次升起后,一朵朵水雾飘过当时世界上最高的雪山,于是便凝成了它。它整天坐在雪山顶上。它的听力十分灵敏,灵敏得可以听见人类的心声。每当人们遇到了困难,它就会小声地给出提示。雪山上的风很大,提示便随着风飘来飘去,有时候可以飘入遇困人的耳朵,有时则不能,有时甚至飘到了别人的耳朵里。

最早的语言出现后,有一批冒险者(现在应该称做科考队员)登上了这座雪山。正当他们愁于如何下山时,他们听到了它的指引,于是这批冒险者很顺利地下了山。这件事很快在他们的部落里传开了。人们把这个精灵叫做 “林姆蒂克”,这在当时的语言中就是 “灵感” 的意思。

时至今日,那门语言早就失传了,但 “林姆蒂克来了” 这个句式却流传至今。比如说,当你隔壁的苏珊阿姨想出了今天做什么菜时,她就会拍掌喊到:“啊!灵感来了!”

中世纪末期,有几个商人为了躲避仇人的追杀逃上了这座雪山。由于刚开始登不久他们就听到了林姆蒂克的指引,所以整个登山过程并没有多么艰难。登上后他们又按照提示在雪山上生了一簇火。火堆散发出大量的热量,很快林姆蒂克便被烤化了。林姆蒂克蒸腾开来,重新变为水雾,随风飘至各地,溶解在河流、江海之中。(也有一说是顺地下水进入河流)