2022年12月1日,FIT2CLOUD飞致云旗下开源建站项目Halo(github.com/halo-dev)正式发布v2.0版本。这是Halo项目继v1.0版本后的第二个里程碑版本,研发团队采用全新架构进行项目重写,实现了从单用户机制向多用户体系的转变,提供全新设计的插件机制和主题机制,改进了附件管理方式,为用户提供富文本编辑器,同时提供后台全局搜索能力。
Halo是一款好用又强大的开源建站工具,它让你无需太多的技术知识就可以快速搭建一个博客、网站或者内容管理系统。
截至目前(2022年12月1日),Halo已经在Docker Hub获得了超过150万次下载,GitHub Star数突破24k,并拥有一百多名社区贡献者。我们在此对所有参与到Halo产品及社区建设的朋友们表达由衷的感谢。
亮点功能
■ 多用户与权限体系
Halo 1.0版本仅支持单管理员机制,这极大限制了Halo的多人使用场景。在Halo 2.0中,我们引入了多用户及RBAC权限体系,支持多用户同时登录管理Halo,并且支持用户权限的细粒度控制,可以为不同的用户分配不同的权限,从而实现不同的用户角色。
■ 灵活可扩展的插件机制
Halo 2.0带来了全新设计的插件机制,这也是2.0版本底层架构变动的主要原因。在Halo 1.0时,我们因为无法对功能进行拓展,所以随着版本不断迭代会导致系统越来越臃肿。比如我们在1.0集成了市面上常见的云存储方案,但绝大部分用户都不会使用到所有的存储方案,这些功能对于Halo来说就变成了一种负担。在Halo 2.0中,我们将这些功能抽离出来,通过插件的形式进行集成,这样用户可以根据自己的需求自由选择,不再会因为一些不需要的功能而导致系统的臃肿。同时也可以实现不更新整个Halo应用,对插件进行单独更新,降低用户更新使用新功能的代价。
我们为插件机制提供了以下能力:
ꔷ 插件的动态加载、卸载、升级;
ꔷ 自定义模型的接入,方便插件的数据存储;
ꔷ 接入Halo的配置模块,方便插件的配置管理;
ꔷ 以及拓展后端、管理端、主题端的能力。
从上图可以看到:
ꔷ 我们将评论组件和搜索组件做成了插件,这是为了方便主题直接使用,而不需要主题单独为这两个功能进行开发;
ꔷ 1.0的友情链接管理功能也被抽离出来,成为了一个独立的通用插件;
ꔷ 阿里云OSS的存储策略也使用插件提供,安装了这个插件即可将附件上传至阿里云OSS;
ꔷ Umami插件提供了对Umami的集成,可以在Halo控制台直接查看网站访问情况;
ꔷ Unsplash插件提供了对Unsplash的集成,可以在编写内容的时候从Unsplash选择图片。
相信随着我们对Halo的持续迭代和生态建设的持续投入,Halo的插件生态会越来越丰富。
目前已支持Halo 2.0的插件可以访问https://github.com/halo-sigs/awesome-halo查阅。
■ 全新的主题机制
Halo 2.0在主题机制上,有以下主要改进:
ꔷ 使用Thymeleaf作为默认的模板引擎;
ꔷ 支持主题预览,可以在不启用主题的情况下预览主题效果;
ꔷ 支持多语言;
ꔷ 全新的设置表单定义机制,支持更多的输入选项,支持表单验证和条件判断;
ꔷ 全新设计的主题可视化设置界面,支持预览不同设备的效果,支持保存设置之后实时预览效果。
■ 全新的默认主题
我们为Halo 2.0提供了全新的默认主题,并命名为Earth,我们计划在未来以太阳系成员的命名方式提供一系列的官方默认主题。
■ 可扩展的附件管理
在Halo 1.0时,社区用户呼声比较高的需求之一就是改进附件管理方式。在2.0版本,我们全新设计了附件的功能,支持分组管理、存储策略等功能。分组管理功能可以帮助用户更好地组织管理不同使用场景的附件。存储策略功能可以让用户定义多个不同的附件存储位置,同时也可以通过插件来拓展外部云存储,比如上面提到的阿里云OSS。
此外,选择附件时还可以通过插件支持更多的附件来源,比如上面提到的Unsplash插件,可以做到在编辑内容的时候直接从Unsplash网站选择配图。
■ 强大的富文本编辑器
在2.0,为了解决Markdown编辑器无法对一些复杂的排版场景进行支持的问题,我们默认提供了富文本编辑器,它能够很好地支持图片插入、表格、任务列表等。不过考虑到部分用户对Markdown有较强的需求,我们将在后续版本中提供对Markdown格式编辑的支持。除此之外,你也可以通过安装插件的方式使用你最喜欢的编辑器。
■ 便捷的后台全局搜索
我们在后台提供了全局搜索功能,可以快速搜索后台的页面、文章、附件、主题等资源。并且提供了快捷键(Ctrl+K,Mac下为Cmd+K)来快速打开搜索框,提高后台的操作效率。
■ 支持搜索引擎
在Halo 1.0的时候,我们搜索文章是通过SQL模糊匹配的方式来实现的,这种方式的搜索效率和准确性都不够理想。在2.0中,我们默认使用了Apache Lucene来提供搜索引擎的支持,也为主题端提供了通用的搜索框组件,大大提高了搜索功能的实用性。同样的,搜索引擎我们也支持通过插件来展,比如集成Elasticsearch、MeiliSearch等。
完整变更日志
关于Halo 2.0的完整特性和变更日志,请访问GitHub Release页面。
https://github.com/halo-dev/halo/releases
接下来
在Halo 2.0正式版发布之后,我们会继续完善Halo的功能和文档,并在每个月按时发布一个功能版本。同时将持续投入对Halo生态的建设,让用户能够更加方便地使用Halo搭建各式各样的网站,构建心中的理想站点。此外,我们也将在不久之后开启应用市场的开发,让用户获取主题、插件更加便捷。同时我们也会不断加大对前沿技术及用户体验的探索,让Halo朝着好用又强大的零代码建站工具的目标持续迈进。
Halo此前的成绩离不开每一位参与者的贡献与支持,踏上这个新的起点,Halo的未来也仍需各位共同努力。