前言 #
3 年前,为了填坑,终于开发了 lanstar,期间看到大家超多的好评,感谢大家的支持 ❀。
但因为个人时间问题,使用 lanstar 的用户可以发现,我的仓库基本隔了好几个月才更新几次。
lanstar 主题到目前为止,界面一共发生了 3 次巨大的变化,第一次版本的界面可以在许多初始、老的资源站看到,第二次版本也在这些年,被新的资源站陆续录用,在未来可能又会看到现在的版本...
界面千万条,这些都是 Lanstar 主题!
我和大多数开发者不一样,他们设计了许多新的主题,样式不同,而我却在相同模板下迭代了多次的界面,如果按照其它开发者的模式,我可能已经开发了 3 款主题。
我认为,名字只是一个代号,对一个名字的持续注入反倒显得如一,当然最主要的原因就是如果主题多了,就会有 N 倍的 bug,修复的次数就更多了...
这就是我多次覆盖样式的原因,反正老的模板也没有用,有 bug 的模板也没有人用...是吧!
改动 #
现在,又轮到更新的时候了,我对自己设计的 Lanstar 主题陷入了反思,期间共提交了30多次的更新。
我感觉的问题 #
- 界面臃肿
- 界面不适合阅读
- 功能非主流
Lanstar4:锐意新生 自砍三刀 #
我也效仿小米 MIUI 14“剃刀计划”:努力打造最轻巧流畅的模板😜
Lanstar4 展开剃刀计划,刀刃向内,努力打造“固件最小、阅读最佳、加载应用最少”的轻巧流畅的模板。先自砍三刀!
第一刀:向臃肿的模板固件下手! #
过去 3 年 Lanstar 随着功能增加,调用的第三方库增加,并且几乎都调用 Jquery 库,jq 是 js 的一层封装,自然体积比 js 原生大,由于时代的发展,兼容等问题逐渐淡化,我们身为前端人,应该走出舒适圈,减少对 jq 的依赖。
HTML5 的出现到如今也已经超过 10 年,那时候就出来好多新的 js api,例如'document.querySelectorAll来平替 jq 的 dom 选择器,那时候开始,jq 注意要离开。
Github 在 18 年时候就全站去除了 jQuery,在他们的博客,提到
在 jQuery 方面,我们将其与现代浏览器中支持的 web 标准的快速发展进行了比较,发现:
$(selector)模式可以很容易地替换为querySelectorAll();- 现在可以使用
Element.classList实现 CSS 类名切换; - CSS 现在支持在样式表而不是 JavaScript 中定义可视化动画;
$.ajax请求可以使用 Fetch 标准执行;addEventListener()接口足够稳定,可以跨平台使用;- 我们可以很容易地用轻量级库封装事件委托模式;
- 随着 JavaScript 语言的发展,jQuery 提供的一些语法糖已经变得多余了。
我在很多地方还看到使用 jq,一些多多少少是历史因素,比如 Typecho 后台,但是它们丝毫不影响我在此倡议大家减少对 JQ 的学习和使用,真的没有必要,也希望某些比赛某些机构减少大家拥抱未来的阻碍,JQ 不是我们的未来!
对历史的 jq 进行改写成 js,真的十分有趣,这也是我本次修改的心得。
不学 jq,也是因为现在都是前端框架——React.js 和 Vue.js 的天下,由于 typecho 没有 api 缘故,要不然我也想开发 vue 版本的模板,这些都在计划中,希望以后能够做出。
因此,我的结论是,操作 dom 用原生 js,拒绝 jq,非 dom 使用 react 或者 vue。
在这样的大背景之下,我的第一刀:
- 将依赖 jq 的库都替代了,懒加载,灯箱,PJAX 等等都是纯 js 实现的
- 把原来的 dom 操作都换到了原生,实践证明了 18 年的话!应该也是第一款完全去除 jq 的 typecho 模板。
- 异步加载评论和文章,现在几乎所有的 typecho 都是使用
jquery的ajax,而我也现在使用fetch去获取,也让我的评论请求发送更快了!有点搞笑是我改完了才发现 fetch 是平替,哈哈哈,另外,lanstar 应该是 typecho 历史上第一个用 fetch 来异步的,真累,fetch 提交表单坑挺多的,也学到更多!(lanstar 的第一次发布也免费开源了无插件的私密回复!也是历史的第一次) - 除去 jq,我对 css 也进行了精简,以前版本升级,无用的 css 也很多。
第二刀:向舒适阅读下手 #
- 将 css 的单位都修改成了 rem,使用了 rem 适配,理论上更好的适配各个设备
- 文章主题区域变大,文字大小得体,以前很多人说太窄了
- pjax 区域更加合理,神奇的解决了 pjax 与一些高亮需要重新激活的问题
- 首页、文章内容页渲染的样式更好能让人阅读,分有没有配图加载,好看就舒服了~
- 友情链接页的图片更大了,解决溢出问题。
第三刀:向按需加载组件下手 #
虽然不是使用 webpack 开发,但我也自己实现了伪“按需加载”,这是现在很多 UI 框架都有的功能。
我呢,实现方法很简单,和以前不同的是不全部加载所有的 js 库,而是例如单击这个操作,我才动态加载 js 到 dom 中,然后再具体实现具体的功能...非常像按需加载,是吧!这样就实现了,首页不加载不需要的 js,用才加载,一定程序上减少了加载时间!
自砍三刀之后,我也增加了一些功能:
- 首页加载部分评论
- 终于在 3 年后增加文章内容页底下的复制链接,分享按钮这些功能
- 也学习了优秀的模板,增加了相册,日记动态等模式,让 typecho 发布不再单调!更多探索尽在 lanstar
- 异步加载分类下的文章
- 2 个 css 属性就实现了模板全部的黑暗模式!这也应该归到第一刀吧,哈哈哈
- 许多 bug 的修复...真的忘了
其实,还有文档,希望下次找个时间一定修订完!
新的界面:
首页

文章内容页

那么,最后,我宣布,本次 Lanstar4 发布会到此结束,祝愿大家身体健康,在新的一年里砍去自己的缺点,能力 UP,事业爱情等等什么都丰收!谢谢大家!
反馈地址:在 github 建个issue
或者加 QQ 群 1147056149
