基于 Laravel 6.0 重构的新版学院的几点说明(上):重构背景和基本使用篇

整这么大动静不说两句似乎不大合适,那就正式说说吧。

重构背景

域名风波

这事儿得从 Laravel 学院域名 LaravelAcademy.org 今年六月底被 ban,再到九月中旬国外服务器彻底无法访问说起,而且 org 域名国内目前已经无法备案,原有的域名网站继续维护下去是一条死路,所以干脆转移到 xueyuanjun.com 这个新域名。

这个方案有利也有弊,好处是脱开了原来 Laravel 前缀的限制,以后更新 Go、Python、JavaScript 教程不再受限,同时“学院君”这个称谓脱胎于 Laravel 学院,熟悉学院的同学都不陌生,不至于完全从新开始建立认知,另外,我个人不等同于学院君,我希望它代表的是一群人,一群“学院派”的人,我们爱学习、爱折腾、有理论根基、有技术流派、对知识有敬畏、植根于理论并且在实践中强化认知、构建自己的知识体系,形成自己的方法论,而不是完全野路子、土八路。

弊端则是脱开了 Laravel 学院的设定,对新人来说可能有些突兀,不太容易建立品牌认知,但是个人也没办法再设置带组织字样的网站名称,所以我更希望推介的是一种学院派的精神,学院君还是那个学院君,不断学习、不断前进、不断输出,并且仍然植根于 Laravel 这棵大树,致力于提供围绕 Laravel 生态的优质中文技术教程,以后可能会引入JavaScript、Golang、Python 之类的新技术栈,前方也许是星辰大海,但根还是在 Laravel 这里,仍然会从这里出发,去更远的远方。

方案选择

好了,背景差不多就这样了,那这些跟新网站重构有什么关系呢,这个重构也不是心血来潮,而是酝酿已久,从年初到现在陆续有一些新想法和新需求,比如编辑器的优化、前端体验的优化、用户体系的区分、程序员内功修炼系列的整合、以及教程越来越多,如何更快更方便的组织内容,这些都摆在台面上,从头开始开发不是一朝一夕就能完成的,直到遇到了 BookStack,初步了解了它的所有功能后,就是它了,几乎能满足我的所有需求,尤其是前端这块,不需要做什么额外的开发,重新开发时间成本过高,原有的Laravel学院就是个博客系统,基于它重构成本并不低,所以找到合适的开源项目做二次开发是以最低成本获取最高收益的事情,此外新的域名和网站名称启用,一个全新的面貌也是必不可少的。

开发过程

从国庆期间构思到最终开发上线花了十天左右的时间,基于最新的 LTS 版本 Laravel 6.0 开发。这期间在原来的 BookStack 基础上引入了博客和问答功能,以及对应的新的权限判断和审核机制、发布频率限制,新增了收藏、点赞功能,在原有用户系统中新增了订阅用户角色及权限设置,重写了个人中心后台实现,新增了事件通知系统,通过相关算法自动生成相关内容推荐,文章浏览数统计优化,全部资源支持评论,几乎所有服务类和仓库类重构(原项目在服务类中直接使用 auth()->user() 获取当前用户信息),静态资源走CDN缓存,全站组件、列表、详情页缓存及更新机制实现,异步事件队列系统,Laravel 学院原有数据迁移对接到新网站的导入和测试,构建后台管理系统(鸣谢 z-song 开源的 laravel-admin),另外还有一些小组件功能的实现,比如伪静态分页器支持、友情链接、推荐资源、广告管理及投放、页面分享(鸣谢 overtrue 开源的 share.js)等,细节不再赘述,也就是不断写代码、测试、继续写代码而已。

使用入门

新的内容入口

上线之后,好多人反馈原有入口找不到了,这两天我也花费了大量时间再重新组织原有的内容,并且以新的组织结构方式呈现,以尽量减少过渡期间大家由于习惯和适应问题增加的学习成本,比如首页置顶资源就替代了原来的首页右上角“文档&下载&公告”组件功能,原来是这样:

现在是这样:

基本都涵盖了原有的入口。

此外,你还可以通过导航菜单、书架/图书入口、全站搜索找到自己需要的资源。

新的内容组织结构

书架入口

新版学院丢弃了分类,因为随着内容的增多,分类的维护非常麻烦,原来的内容少,通过几个页面就能把不同类目的资源串起来,而现在是以新的“书架->图书->章节”功能组织文档、系列教程内容,比如原来的 Laravel 文档、系列教程、包括一些热门类目,比如设计模式、扩展包、完整项目现在都以图书的方式呈现,相关的图书再通过书架聚合起来,所以你可以通过“Laravel中文文档”书架查看所有版本 Laravel 文档,可以通过“Laravel入门到精通教程”查看所有Laravel实战教程,这些入口都在首页显著位置展示出来了,你也可以通过书架菜单进入书架列表:

图书入口

点击其中某一本书就进入了图书详情页,比如“Laravel 5.5 中文文档”:

图书详情页就相当于文档索引了,可以通过章节快速了解内容结构,点击即可查看该章节的内容,这里的目录索引对应原来学院的文档入口页面,过渡期为了方便大家快速适应,以后就不再提供了。

图书搜索

另外注意到图书页面右上角的搜索框,支持本图书内容进行搜索:

博客和问答列表页的左上角搜索框也是一样,只对博客和问答内容进行搜索,全站搜索请使用页面顶部导航菜单中间的搜索框。

文章详情

点击某一篇文章就进入内容详情页了:

中间是文章详情,不必多言,右侧是基本信息、统计信息和点赞、收藏按钮,左侧是标签、页面导航和图书导航,相对于之前的旧版图书导航是最大的亮点,一旦进入某个文档或系列教程的详情页,就可以通过左侧图书导航进行沉浸式阅读,不必再出来了:

文章详情页以下依次是分享、相关文章和评论功能,无须多言。

评论功能

需要注意的是评论登录后才可以发布,支持 Markdown 语法和 Emoji 表情:

另外,对于自己评论内容,可以进行编辑或删除操作,还可以对其它人的评论进行回复:

夜深了,今天先聊到这里,下一篇学院君来给大家介绍用户注册登录以及内容发布功能。新版学院的编辑器还是很强大的,我现在又可以像 Wordpress 那样直接在编辑器中写文章了,比如这篇,都不用跳出去,插入链接、图片通通可以在这个 Markdown 编辑器中完成。

上一篇: Laravel 学院今天下午两点半到三点半期间不能访问问题定位及修复细节报告

下一篇: 基于 Laravel 6.0 重构的新版学院的几点说明(下):用户认证和内容发布篇