52

lyanna v2.0以来的重要更新

 4 years ago
source link: http://mp.weixin.qq.com/s?__biz=MzA3NDk1NjI0OQ%3D%3D&%3Bmid=2247484882&%3Bidx=1&%3Bsn=f98f9665c086071fc18f2c604f1e907e
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

从lyanna 2.0版之后还没有具体介绍过这个博客应用发生了那些改变,本篇文章介绍到目前v2.7里面做的重要改变以及v3.0的展望。

专题

在博客应用中常见的聚合页面包含「归档」、「分类」和「标签」,但我一直认为缺点什么,其实从很早前就想尝试实现「专题」这个效果。这是因为我比较喜欢写系列文章,而且我觉得很多文章可以按某种条件归到一起,但是并不是得按照现有的条件排序: 如按发布时间升序或者降序。我希望有一种聚合页面可以方便的按照运营者自己的观点去调整文章列表的顺序。

在电商、社交网站,「专题」是一种常见的页面形式。各家各产品的表现形式差别也比较大,但是我们还是可以借鉴其中的3个思路:

  1. 专题是一个或者多个文章的聚合页面

  2. 专题和文章一样,也有一个列表

  3. 专题管理后台主要作用除了设置专题介绍等信息,对应文章由运营者从现有文章列表选取

通过一个动态图看看效果:

ayiA3qI.gif

目前我没把专题做的很重。再感受下后台:

rEfYFvn.gif

分了已选/备选2个数据池,可以方便在2个池之间拖拽、选择和删除。有一个重要的小贴士,如果你的文章列表很长,例如我博客目前有160+篇文章,从备选列表下面拖拽文章到已选池非常麻烦,所以在这里可以直接点对应文章即可。

Widget

在V2.7时添加了Widget(小部件),这个功能思路来源于Wordpress,最终目的是可以在博客的(左/右/上/下)边栏中添加、排列或删除这些部件。不过目前只支持右侧边栏,感受一下:

QjIreeU.gif

现在内置了aboutme、blogroll、most_viewed、latest_comments、tagcloud、html等widget,其实是其中的html插件,它给予了极大的自由度,可以方便自定义设置边栏的内容,发挥想象力吧。

需要重点说的一点是widget相关的配置需要使用新的 config.yaml ,使用YAML而不是原来的Python配置文件 local_settings.py _主要是由于Python代码对于描述复杂配置结构表现力太差,而直接写JSON可读性和可维护性差。 未来我会将所有配置都改用 YAML

最后欢迎大家提PR添加更多的widget。

V7NJnuN.png!web

kubernetes/Docker Compose支持

这个还是以学习和本地开发为主,现在已经有线上kubernetes版本的博客效果:https://blog.dongwm.com

这2个应用在不同区域(一个北京一个上海)的2个服务器上,数据是不同步的。原因其实不复杂: 我目前用的博客服务器是最低配(1核CPU+1G内存),按kubernetes官网说明不符合配置要求,所以在另外一个刚能达到要求的服务器上跑kubernetes。不过大家手动访问过可以感受到: kubernetes版本的要慢很多。展望一下,等我不差钱了,买个物理机再把博客迁到kubernetes上吧:stuck_out_tongue_closed_eyes:

Github Cards

支持在文章中引用Github User/Repo Card,代码源于Github Cards,我对样式做了微调。我的博客的「关于本站」这篇文章中有体现:

YJfeQfu.jpg!web

盘古之白

「盘古之白」简单地说就是对文章内容中的中英文之间自动加空格。这是一个比较强迫症的体验,我其实对这部分没那么大的阅读不适,但是有几个订阅博客内容的朋友都提到过,我想了想对于技术性博客代码、中文、英文混杂加上盘古之白也是有必要的。

具体实现可以翻我写的代码了,除了标题和代码以外的内容都会自动加空格。

重构了Profile部分

博客原来决定是否显示右边栏是通过一个叫做 SHOW_PROFILE 的变量决定的,在它的背后是一个Profile的模型,不过这个模型狠鸡肋,虽然是用atts包装了一下,但说白了就是写了个本地JSON文件。我一直对Profile很不满意,觉得它和「User」有冲突。但是当时没想通要怎么实现,这次接着aboutme这个widget的实现重构了它。

重构内容如下:

  • 去掉了Profile部分逻辑

  • 原来Profile的头像部分放到了User里面

  • aboutme显示的信息通过配置(config.yaml)决定,和User模型无关

感受一下(发布时间、标签、阅读数栏最左边):

aMrmemZ.jpg!web

可以看到更新当前登录管理员(User)头像是会改变。另外文章页面可以展示用户信息(通过 SHOW_AUTHOR=True )

展望

在Python 2.7的「退休」倒计时结束前,lyanna也会迎来v3.0。下面是我想到的一些变化:

  • 使用最新的Python 3.8语法海象运算符(Assignment Expressions)。现在还是Python 3.8.0,我一般会等下一个小版本发布后再开始正式使用,而Python 3.8.1会在12月16日左右发布,所以届时lyanna项目将不再支持Python 3.8之前的版本

  • 统一使用YAML配置文件,现在只有widget部分使用YAML,之后会完全的使用表现力个会更好的YAML,当然我也考虑了TOML,不过最终还是觉得YAML更好

  • 命令行工具。类似hexo cli,提供管理、配置、开发服务器

  • 使用Electron构建一个本地的编辑器,可以编辑、管理、同步文章等

FZRvqm7.jpg!web

其他就是一些小修改了,就不一一提到了。欢迎大家使用lyanna


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK