官方文档halo主题开发指南:Halo Documents侧边栏的开发者指南-主题开发(文档写得真好!)
基础
浏览器 F12 定位目标样式
F12
,然后``ctrl+shift+c`之后就可以
鼠标选择(指:鼠标悬停)界面元素定位html代码(“元素”tab中)和样式
- 同时还可以在右边开发者面板中临时修改样式查看效果
鼠标选择(指:鼠标悬停)html代码(“元素”tab中)定位界面元素
这个功能可以用来检查你写的元素有没有按预期显示
分析页面加载速度慢的原因
以 Chrome 浏览器为例,F12 ,进入 NetWork 项,勾选 Disable cache
,表示禁止浏览器缓存资源到本地,这样可以看到首次加载所有资源的耗时情况。
然后按 F5 刷新页面,点击 Time 进行排序,就可以看到每个资源的加载耗时情况,一般来说如字体这类比较大的资源加载慢是很正常的,而一些 js 如果加载时间靠后则说明该资源可能需要 CDN 加速或者更换加载源。
由于网络差异,上面所述页面资源加载时间并非在所有地区都相同,但是也可以提供一个参考
准备工作
搭建开发环境
装java
下载.jar包:见Halo的“快速开始”
java -jar halo-1.5.4.jar --spring.profiles.active=dev
启动完成之后,在用户目录即可看到
halo-dev
文件夹(如果是windows是C:\user\<user_name>\
目录下面有``halo-dev`文件夹)如果是
java -jar halo-1.5.4.jar
,则在用户目录看到的是.halo
文件夹在启动halo的本机浏览器访问
http://localhost:8090
即可访问你的博客
vscode装前端开发插件
- FreeMarker
- JS & CSS Minifier:JS 和 CSS 压缩插件,其它如编译 Sass 或者 Less 的插件需要自己自行安装。
新建主题
在 ~/halo-dev/templates/themes
下新建一个文件夹,该文件夹就是你所新建的主题目录
非开发方式启动也可以以这种方式应用主题:直接把主题文件夹放到themes下面即可
开发约定
开发样板
目录结构
官方示例目录结构
├── module // 公共模板目录
│ ├── comment.ftl // 比如:评论模板
│ ├── layout.ftl // 比如:布局模板
├── source // 静态资源目录
│ ├── css // 样式目录
│ ├── images // 图片目录
│ ├── js // JS 脚本目录
│ └── plugins // 前端库目录
├── index.ftl // 首页
├── post.ftl // 文章页
├── post_xxx.ftl // 自定义文章模板,如:post_diary.ftl。可在后台发布文章时选择。
├── sheet.ftl // 自定义页面
├── sheet_xxx.ftl // 自定义模板,如:sheet_search.ftl、sheet_author.ftl。可在后台发布页面时选择。
├── archives.ftl // 归档页
├── categories.ftl // 分类目录页
├── category.ftl // 单个分类的所属文章页
├── tags.ftl // 标签页面
├── tag.ftl // 单个标签的所属文章页
├── search.ftl // 搜索结果页
├── links.ftl // 内置页面:友情链接
├── photos.ftl // 内置页面:图库
├── journals.ftl // 内置页面:日志
├── 404.ftl // 404 页
├── 500.ftl // 500 页
├── README.md // README,一般用于主题介绍或说明
├── screenshot.png // 主题预览图
├── settings.yaml // 主题选项配置文件
└── theme.yaml // 主题描述文件
less min.css
Less是一门扩展性的 CSS 预处理语言,在 CSS 基础上增加了函数、变量等一些便于写代码并且易于读懂的功能,而 CSS 可以由 Less 编辑而成。也就是上面的 main.css
是由 main.less
通过编译所有子模块的 less 文件而成,**main.min.css
则是由 main.css
压缩而成。以上 Less 编译和 CSS 压缩都可以交由 Vscode 插件完成**
全局 CSS 文件代指 main.css
,你需要将该 CSS 压缩为 main.min.css
并覆盖之前的 main.min.css
即可在页面生效;将会作用于所有页面
ftl
Halo 的模板引擎为 FreeMarker,文件后缀名为ftl
可以参考FreeMarker Java Template Engine (apache.org)
Freemark控制生成文本,比如满足条件的就会抄过去生成文本