本博客以 Hexo 3.2.2 为静态博客框架,以 material 1.3.0 为主题搭建而成。 参阅这两个的官方文档便可以初步搭建一个美美哒的博客了。
个性化配置&优化
这里 是官方收录的 Hexo 插件。
这里列一下博客用到的插件,大部分都可以看其对应官方文档就能正确配置。
链接
固定链接插件:hexo-abbrlink
之前的 permalink 格式是:
| 1 | permalink: post/:year/:month/:day/:title/ | 
使用 hexo-abbrlink 插件格式是:
| 1 | permalink: post/:abbrlink/ | 
部署
当访问博客网站 Tianma
- 国内IP走的 coding: tianma8023.coding.me
- 国外IP走的 GitHub: tianma8023.github.io
这样一定程度上能加快网站加载速度。
达到以上效果,大致来说,需要以下步骤:
- 将博客部署到 GitHub和Coding, 具体参阅 hexo干货系列:(四)将hexo博客同时托管到github和coding 和 git多网站ssh部署方案
- 注册域名,国内有 万网,国外有 GoDaddy , 然后进行域名绑定,即国内走 Coding国外走GitHub,相关教程很多就不赘述了。
静态资源压缩优化
使用 gulp 压缩 Hexo 静态资源
gulp 的官方定义非常简洁:基于文件流的构建系统。
说人话系列:gulp 是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器;她不仅能对网站资源进行优化,而且在开发过程中很多重复的任务能够使用正确的工具自动完成。
更多详细配置请参考 使用 gulp 压缩 hexo 静态资源
CDN服务
CDN 存储服务商使用的是 七牛云,配合 hexo-qiniu-sync 食用。
使用 CDN 存储服务的主要目的就是把 图片、视频、音乐等其他较大的静态资源 上传到七牛云,加速博客网站静态资源加载。
详细请参考 使用七牛为Hexo存储图片等资源。
更新:由于七牛云现行规定是,使用了内容存储服务的必须要绑定在中国大陆已备案的域名,而我目前的域名是在 GoDaddy 上注册的,没法备案,所以已将 CDN 从七牛云迁移至 阿里云OSS。
音乐播放
音乐播放器采用的是 DIYGod 的 APlayer, 以 MetingJS 为辅助配合食用。
详情参考: Hexo 折腾:音乐播放
图片
- 图片描述(description):因为 - material主题本身没有对图片做过多处理,当使用:- 1 -  - 插入图片时,最后的 - description是没有显示的。这里采用 hexo-image-caption 插件将上述 markdown 生成如下元素:- 1 
 2- <img src="xxx.jpg" alt="description"/> 
 <span class="image-caption">description</span>- 从而展示 - description,当然了,出于美观,需要对- .image-caption元素指定相应的 css 样式。- 更多配置参考其文档。 
- 图片放大查看: 由于 - material主题没有该功能,这里便采用- FancyBox库实现该功能,详情参考 Hexo 折腾:利用 Fancybox 添加图片放大预览查看功能
看板娘
看板娘采用的以 live2d 技术为核心,以 hexo-helper-live2d 为插件,配合 live2d 模型制作而成。
详情参考:
- hexo-helper-live2d
- 本博客给看板娘加入了 鼠标滑动悬停和点击事件监听,以做出更多响应。 具体参考 给博客添加能动的看板娘(Live2D)-将其添加到网页上吧
分页
由于 material 主题本身没有分页功能,而 hexo-theme-next 提供了分页功能,在 next 主题启发下,其实 hexo 本身就提供了 paginator 这一 Helpers(辅助函数) 实现分页。
具体步骤为:
- 在 - material/layout/index.ejs中的- index nav模块中插入:- 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11- <% if (page.total > 1) { %> 
 <!-- Index nav -->
 <nav class="material-nav mdl-cell mdl-cell--12-col">
 <%- paginator({
 prev_text: __('<button class="mdl-button mdl-js-button mdl-js-ripple-effect mdl-button--icon"><i class="material-icons" role="presentation">arrow_back</i></button>'),
 next_text: __('<button class="mdl-button mdl-js-button mdl-js-ripple-effect mdl-button--icon"><i class="material-icons" role="presentation">arrow_forward</i></button>'),
 space: '…',
 mid_size: 1
 }) %>
 </nav>
 <% } %>- 在生成 html 文件的时候,会自动生成相应的页码,其中,当前页面是 - .page-number.current元素, 非当前页面是- .page-number元素,还会根据- paginator的- space配置生成- .space元素。
- 在 - material/source/css/style.min.css中加入相应的 css 样式,考虑到目前- material主题的- scheme是- Paradox, 所以只贴出了- Paradox相关的 css 样式:- 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23- #scheme-Paradox .page-number { 
 padding: 0em 0.8em;
 font-size: 1.3em;
 margin: 0em 0.2em;
 }
 @media screen and (max-width:480px) {
 #scheme-Paradox .page-number {
 padding: 0em 0.4em;
 font-size: 1.2em;
 margin: 0em 0.2em;
 }
 }
 #scheme-Paradox .space {
 color: #666;
 }
 #scheme-Paradox .material-nav .page-number.current {
 color: #FF4081;
 text-align: center;
 font-weight: bold;
 }
版权声明
现在已经是大版权时代,对文章进行版权声明也是有必要的。文章类的版权声明主要通过 知识共享许可协议来进行,故声明之前有必要了解 知识共享许可协议(Wiki) 和 关于许可协议。
考虑到有些网站会爬取他人博客,其实主要是针对 body 体内的内容,所以需要把版权声明部分写入 body 体中:
- 自定义字段:考虑到有些博文可能是不需要版权声明的,比如转载、翻译之类的,所以自定义 - post_license作为开关:- 主题配置文件 - _config.yml中添加字段,作为总开关:- 1 
 2- post_license: 
 enable: true # or false
- 文章的 - Front-matter中添加字段,作为独立开关:- 1 - post_license: true # or false 
 
- 创建 - material/layout/_partial/post_license.ejs:- 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19- <div> 
 <br/>
 <ul id="post-license" class="post-license">
 <li class="post-license-author">
 <strong>本文作者:</strong>
 <a href="<%= config.url %>"><%= theme.author %></a>
 </li>
 <li class="post-license-link">
 <strong>本文链接:</strong>
 <a href="<%= page.permalink %>"><%= page.title %></a>
 </li>
 <li class="post-license-statement">
 <strong>版权声明: </strong>
 本文由 <%= config.author %> 原创,采用 <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh" rel="license" target="_blank">署名-非商业性使用-相同方式共享(CC BY-NC-SA)4.0 国际许可协议</a> </br>转载请保留以上声明信息!
 </li>
 </ul>
 </div>
- 在 - material/layout/_partial/post-content.ejs引入- post_license.ejs:- 1 
 2
 3- <% if(theme.post_license.enable && page.post_license !== false){%> 
 <%- partial('_partial/post_license') %>
 <% } %>
- 在 - material/source/css/style.min.css中添加 版权声明 样式:- 1 
 2
 3
 4
 5
 6
 7- #post-license { 
 margin: 2em 0 0;
 padding: 0.5em 1em;
 border-left: 3px solid #ff4081;
 background-color: #f9f9f9;
 list-style: none;
 }
工具推荐
- 图片压缩:tinypng - 在压缩图片的同时尽可能保证图片质量
- 矢量图, 图标等:iconfont, IconFinder, material icons
- 图床工具:PicGo