最近业余时间利用hexo为自己搭建一个高度自定义的个人站点,站点发布在github上,访问地址为:https://cqhaibin.github.io/。本博客简单介绍实现此站点的过程。效果图如下

构建此站点最初的目的主要方便自己使用本人开发的tomato time这个小工具。然后在实施的过程中加入的自己自己琢磨写的vueManager。

hexo的介绍和常用内容总结

hexo实现了通过markdown生成静态站点的能力,提供了高度定制化的能力。

1. hexo常用命令

命令名 说明
hexo init 初始化一个hexo项目
hexo server 启动本web服务,用于开发阶段
hexo g 生成静态网页
hexo d 部署网页
hexo clean 清理缓存
hexo new "postName" 新建文章
hexo new page "pageName" 新建页面

2. hexo模板介绍

archive.ejs归档列表页模板,归档可以按照年份+月份实现的,list_archives显示列表

模板文件名 说明
layout.ejs 模板的入口文件,也是整个站点的入口文件
index.ejs

首页,布局文件<%- body %>默认输出嵌入的页面

post.ejs 文章详细页
page.ejs 页面
archive.ejs 归档列表页模板,归档可以按照年份+月份实现的,list_archives显示列表
category.ejs 分类显示页
tag.ejs 标签页

hexo的模板解析,以layout.ejs为入口,所有静态页面(如:文章、页面、首页、标签、归档、分类等)都会以layout.ejs为模板。所以每个页面的公共部分应该在写layout.ejs中(如页头、页脚等)。

3. hexo-asset-image

此插件实现markdown引用的本地图片,在markdown转换为html也能被正确引用。

hexo模板开发

根据上述 “hexo模板介绍”,我们可以很较为轻松的开发出自己的模板,模板文件说明

模板文件夹、配置文件 说明
layout 相关ejs模板信息,用于生成html时使用
script 此文件夹下的.js文件,作为hexo插件 的一种扩展存在,在编译过程中起作用
source 此文件下的文件或文件夹,在编译过程中会保持不变,供开发者使用
languages 多语言包
_config.yml 针对当前模板的配置文件,配置文件中的信息可以被ejs模板访问

说明:

1. 本示例模板使用的stylus作用css的预编译语言。

hexo插件开发

1. 插件需要入在node_moduels文件夹下,必须有.js和.package.json文件(也就是一个标准npm包即可).

js文件:

  1. 'use strict'
  2. console.log('hexo-filter-list start success....');
  3. var core = {
  4. findglyph: function(txt, glyph){
  5. var num = 0;
  6. while(txt.charAt(num) == glyph){
  7. num++;
  8. }
  9. return num;
  10. }
  11. }
  12. hexo.extend.filter.register('before_post_render',function(data){
  13. //正则获取标题,并赋值给data对象
  14. var regex = new RegExp("(#{1,6})\\s*(.?)(\\S*)", "g");
  15. var titles = [], tmp;
  16. while((tmp = regex.exec(data.content)) != null){
  17. var txt = tmp[0], level = core.findglyph(txt, '#');
  18. var val = {
  19. level: level,
  20. title: txt.substring(level).replace(/(^\s*)/g, '')
  21. }
  22. console.log(val);
  23. titles.push(val);
  24. }
  25. data.headers = titles;
  26. });

package.json文件

  1. {
  2. "name": "hexo-filter-list",
  3. "main": "index",
  4. "version": "1.0.0.0"
  5. }

注意:

1. hexo的事件监听都是有缓存的,内容不变,不会触发相应的事件。

2. 本示例的下载包中不包含node_modules,需要手动放将hexo-filter-list放在node_moduels中

3. 必须在根目录的package.json文件的依赖荐中加入hexo-filter-list包,如下

  1. "dependencies": {
  2. "hexo": "^3.2.0",
  3. "hexo-filter-list": "^1.0.0.0",
  4. }

总结

本文只是hexo使用的初级探索,其中关于hexo的说明存在问题的地方希望各位朋友指正。如果你需要使用hexo,还是建议都看他的官方文档。

下载hexo-filter-list插件                下载hexo示例

hexo配置自己的博客站点的更多相关文章

  1. 使用hexo和coding建立静态博客站点

    背景 由于工作性质的原因,做技术的总想记录和分享一下自己的学习和成长历程,向这世界证明我来过.写文章,发博客,一开始使用51cto,广告太多,看起来让人很痛苦:接着试用了博客园,广告少一些,但感觉还是 ...

  2. github+hexo搭建自己的博客网站(六)进阶配置(搜索引擎收录,优化你的url)

    详细的可以查看hexo博客的演示:https://saucxs.github.io/ 绑定了域名: http://www.chengxinsong.cn hexo+github博客网站源码(可以clo ...

  3. 基于Hexo和Github搭建博客

    搭建自己的个人博客. 准备工作 确保电脑需要已下载安装node和npm.查看安装是否成功,windows只需在命令行输入以下两条命令即可. 1 2 $ node -v $ npm -v 安装hexo ...

  4. 《Hexo+github搭建个人博客》

    <Hexo+github搭建个人博客> 文/冯皓林 完稿:2016.4.22-2016.4.23 注意:本节教程只针对Windows用户.本教程由无人赞助,赞助写出. <Hexo+g ...

  5. 可能是最详细的 Hexo + GitHub Pages 搭建博客的教程

    前言:博主目前大三,Web 前端爱好者.写博客的好处,不是为了写而写,而是一个记录思想的过程.不要考虑它能带给你什么,而是你自己从中收获了什么. 最近刚好有空,于是就参照网上的各种教程,搭建了一个博客 ...

  6. github+hexo搭建自己的博客网站(一)基础入门

    github提供的page,hexo提供的静态博客文档,这样可以搭建一个自己的一个博客网站. 使用github pages服务搭建博客的好处有: 全是静态文件,访问速度快: 免费方便,不用花一分钱就可 ...

  7. github+hexo搭建自己的博客网站(七)注意事项(避免read.me,CNAME文件的覆盖,手动改github page的域名)

    详细的可以查看hexo博客的演示:https://saucxs.github.io/ 绑定域名可以查看:http://www.chengxinsong.cn 可以查看在github上生成的静态文件(如 ...

  8. hexo建立github,gitcafe博客并实时同步的要点

    把hexo博客的源码和生成的页面实时同步到github和gitcafe. 用搜索引擎搜索"github 博客"等关键字会出现大量很好的文章教小白一步步搭建.我这里列出一些关键点,希 ...

  9. 使用Node.js+Hexo+Github搭建个人博客

    一.为什么要花时间去搭建个人博客? 首先说说为什么我想要尝试着去搭建属于自己的Blog,古人云:“好记性不如烂笔头”.一开始我把笔记做在本子上.电脑上,发现要用的时候特别地不方便,而且越记越多.越多越 ...

随机推荐

  1. vs2015创建类时增加默认注释

    我是vs2015修改 C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\ItemTemplatesCache\CSharp ...

  2. SSH(Struts+spring+hibernate)配置

    1.spring和struts 1)web.xml 配置spring的ContextLoaderListener(监听器) 配置Struts的StrutsPrepareAndExecuteFilter ...

  3. ES6---箭头函数()=>{} 与function的区别(转载)

    1.箭头函数与function定义函数的写法: //function function fn(a, b){ return a + b; } //arrow function var foo = (a, ...

  4. 按键精灵PC版<末日王者>

    更新模式[强制] 更新版本[1.28] 更新链接[https://yunfei-1256035889.cos.ap-beijing.myqcloud.com/%E6%9C%AB%E6%97%A5%E4 ...

  5. native的详细用法

    目录 1.JNI:Java Native Interface 3.用C语言编写程序本地方法 一.编写带有 native 声明的方法的java类 二.使用 javac 命令编译所编写的java类,生成. ...

  6. v-charts修改点击图例事件,legendselectchanged

    html: <!--折线图--><ve-line :extend="item.chartExtend" :data-zoom="dataZoom&quo ...

  7. Mac安装sqlite3

    1,下载最新版本的 Mac OS X 会预安装 SQLite,但是如果没有可用的安装,只需按照如下步骤进行: 去安装最新的3.8.6版本,和linux的sqlite3安装版本是同一个. 软件地址为:h ...

  8. 把ssl模块加入到已经编译好的apache中实现HTTPS

    为了使Apache支持https访问,系统需要安有apache.openssl.mod_ssl.so 1.安装openssl: 基本上系统都已经安装了,在/usr/bin/openssl下,直接使用o ...

  9. webpack 4+ vue-loader 配置 (完善中...)

    webpack 4+ vue-loader 配置 写的demo,clone下来后,npm run dev即可,(此demo并未加入router) 可能会由于版本问题,配置会有些许改动,暂时都是可用的 ...

  10. vue动态切换组件

    <!DOCTYPE html><html> <head> <meta charset="utf-8"> <title>& ...