逛github相关的帖子时,发现了hexo。正好想要做一个个人的博客,用来记录自己的各类感悟,所以花一些时间学习学习,以后博客可以放github,省得去注册csdn、掘金这些博客。
也算是一个私人日志,希望能记录下自己关于技术、生活、社会等相关的信息。
本文记录使用hexo遇到的一些坑,算是一个总结。持续更新。

简介

Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页。

开始搭建

从零开始搭建一个个人博客,内容比较多,推荐以下几个文章(官网是必看的)。

命令

  • hexo g(hexo generate): 渲染source下的文件,生成到public下
  • hexo s(hexo server): 启动hexo服务器 启动完毕后可本地访问个人博客
  • hexo l(hexo list): 列出当前博客站点的一些信息(pagepostroutetagcategory)
    • 示例
      1
      2
      3
      4
      5
      6
      7
      8
      9
      > hexo l post
      >
      Date Title Path Category Tags
      2018-03-06 Base 7 _posts/Base_7.md LeetCode LeetCode Problem - Base 7
      2018-03-06 Escape The Ghosts _posts/Escape_The_Ghosts.md LeetCode LeetCode Problem - Escape The Ghosts
      2018-03-06 Partition Equal Subset Sum _posts/Partition_Equal_Subset_Sum.md LeetCode LeetCode Problem - Partition Equal Subset Sum
      2018-03-27 学习HEXO的历程 _posts/learn-hexo.md 发现新大陆 学习HEXO
      2018-04-03 js面向对象入门 _posts/js/js-oop.md js base js
      2018-04-05 ppt-demo _posts/ppt/ppt-demo.md ppt reveal-demo

文章

  • hexo new <title>新建title.md文件
  • MARKDOWN语法
  • TIP:
    • .md文件的开始采用如下形式描述即可,其中不能带:,测试过在tags中带了:,编译未通过:
      1
      2
      3
      4
      5
      title: Partition Equal Subset Sum
      date: 2018-03-06 18:00:00
      tags: LeetCode Problem - Partition Equal Subset Sum
      category: LeetCode
      ---

API测试

  • 添加描述:
    title: 必填。你文章的名称,尽量简洁高效。
    path: 文章路径。
    category: 分类策略。其实就是你分类的文件目录。
    tags: 额外标签,可以取得小一点,实用就行。

hack

静态资源

要知道hexo的原理是把你写的markdown文件按一定的规则渲染成html+css+js的,最终生成的网站,和我们手写效果是一样的,只不过是让你能够用写文档的方式写一个网站罢了。所 大专栏  学习HEXO的历程以要想引入图片、css还是很容易的。

  • step1: 在source目录下新建文件夹,用于放置您的静态资源,如/source/images,放置一张图片(handsome.png)进去
  • step2: 在您的md文件中采用相对路径引用您存放的文件![Alt text](/images/handsome.png)

    页面资源

    上面的例子阐释了如何加载一张图片,但是图片是不可能满足我们的,这辈子都不能满足。比如我们写了一个很酷炫的页面,要怎么去加载它呢?这时候如果把一堆静态资源丢到source下,很可能会报错。博主试过如下目录结构出错。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    |-source
    |-ppt
    |-css
    |-print
    |-paper.css
    |-pdf.css
    |-theme
    |...
    |-js
    |reveal.js
    index.html

对你没看错,想要在某个md文件内引用我用reveal.js制作的ppt。但是在hexo g的时候会报错。这个错误是由js文件产生的,老是说js文件结尾有错。后来上网学了一招。

  • 将ppt目录拷贝至theme/next/source/下。因为theme的内容在hexo g的时候是直接拷贝至public下的,绕过了自带的渲染。这时候在你的md文件内相对链ppt-demo.html就可以了。

    主题

    _config.yml内设置theme: next

  • next
    • 设置展开阅读:auto_excerpt.enable = true
    • 设置主题: scheme(有四种可选,可以多设置几个试试)
    • 设置tagscategories: hexo new page “tags”,然后在index.md里面设置type: "tags"

样式

hexo是一个静态博客框架,里面的样式自然是高度可配置的。以博主使用的next主题为例:

theme
|-next
|-.github
|-languages : 语言包
|-layout : 布局包
|-scripts : 脚本包.swig swig前端模板引擎
|-source : 源码包
|-test : 测试包

这其中layout包内的_custom就是用于用户自定义的脚本。其余目录大家可以自由阅读,没有十足把握不要轻易修改,不然搞坏了要恢复回去就不容易了。这讲一下背景图片。

  • 首先在页面内定位到body元素。他的class为class="pace-done"。然后webstorm全局搜索发现这个class是在pace.min.js内写的。
  • 修改pace-done的内容肯定是不允许的,我们继续查看themes/next/layout/_layout.swig(这个文件是总的布局文件,最后生成的代码可以在/public/index.html内看到)。在_layout.swig内搜索body。
  • 忽略swig模板语法。我们只需要关心body元素的样式即可,在body内加入class="wander-background-blue">。是的,只是在这里加了一个class。因为上一段分析的时候pace-done是在js脚本内添加的,所以这里在元素上直接写class,两者不会存在冲突。
  • 接着定义您的.wander-background-blue即可
    .wander-background-blue {
    background :#1f47bb;
    background-image: -webkit-linear-gradient(135deg, #13498b, #13194b);
    background-image: -moz-linear-gradient(45deg, #13498b, #13194b);
    background-image: -ms-linear-gradient(45deg, #13498b 0, #13194b 100%);
    background-image: -o-linear-gradient(45deg, #13498b, #13194b);
    background-image: linear-gradient(135deg, #13498b, #13194b);
    }

    这里需要说明一下:layout内是脚本内容,source才是源码。所以,这一段脚本应该放在themes/next/source/css下,框架开发者已经给我们预留了一个用户自定义文件,themes/next/source/css/_custom/_custom.styl。脚本放里面即可。

上面讲的是一种定位和修改样式的思路,其余样式大家可以自行开发,充分定制自己的博客。

实际上大部分样式都可以在themes/next/_config.yml内定制。有兴趣的可以查看该文档,英文描述也比较简单易懂,另外,博主的源码也欢迎查看。

学习HEXO的历程的更多相关文章

  1. 学习UFT11.5历程(一)

    博主三年来测试都是功能测试 看了虫师的文章,感觉是要学点东西.所以,听从虫师的话,不被眼花瞭乱的测试技术打扰,先学习UFT,再学习python. 再不学习感觉要被淘汰了...... 也不想有谈工资的时 ...

  2. C++学习的心路历程之心理障碍

    断断续续的C++学习已经过了1年多了,可是,我还是没有迈出可以自如输出写点什么的那一步.甚至我因为这个老是怀疑自己的智商,我是真心想学懂,因为这个关系到我的就业,直接关系到我的饭碗.我是十分的着急,可 ...

  3. 学习Selenium的历程

    Selenium资源包下载 我这段时间在学习Web自动化测试方面的知识,在搭建相应的环境上出现了问题.去Selenium官网下载相对应得包,老是下载不了.而如果直接到CSDN等上下载,需要积分,或者下 ...

  4. 学习UFT11.5历程(三)

    已经用UFT11.5完成了几个大流程的录制和脚本调测. 现整理下这段过程中脚本中应该记住的点(QTP是VB脚本): 1. 循环和条件部分_reporter结果展示 For i = 1 To brow  ...

  5. 学习UFT11.5历程(二)

    1. QTP对象TO与RO TO: test object. 本地对象库里的封装对象 RO:run object. 运行封装对象 和TO.RO相关的几个函数有: GetTOProperty(“属性名” ...

  6. 浅聊本人学习React的历程——第一篇生命周期篇

    作为一个前端小白,在踏入前端程序猿行业的第三年接触了React,一直对于框架有种恐惧感,可能是对陌生事物的恐惧心里吧,导致自己一直在使用原生JS和JQ作为开发首选,但是在接触了React之后,发现了其 ...

  7. MVC学习的心路历程

    2020/4/17 之前接触过三层架构,但是没有接触过mvc,所以有点蒙,所以现在在一步步构建思路. 1.了解MVC的发展,做一个简单的项目.

  8. Go语言学习的坑爹历程

    鄙人暑期实习,需要用Go语言进行编程 在go语言中,结构体的定义只支持变量的声明,成员函数是采用"接口方法"来实现的 留一个成员定义的模板在此 package main impor ...

  9. JavaScript学习历程和心得体验

    一.前言 在过去,JavaScript只是被用来做一些简单的网页效果,比如表单验证.浮动广告等,所以那时候JavaScript并没有受到重视.自从AJAX开始流行后,人们发现利用JavaScript可 ...

随机推荐

  1. 6.docker container

    1. 什么是container 通过 image 创建 (copy得到的) 在 image layer (在image 层) 上 增加了一层 container layer (container 层 ...

  2. 2.监控利器nagios手把手企业级实战第一部

    1.   什么是Nagios?    Nagios是一款开源的网络及服务的监控工具,功能强大,灵活性强,需要注意的是,其服务端只能在linux上面安装.            Nagios可以进行分布 ...

  3. sphinx转pdf显示中文

    在conf.py中 修改, 加入 ctex包 latex_elements = { # The paper size ('letterpaper' or 'a4paper'). #'papersize ...

  4. mysql自定义函数初始化数据:init_data()

    DELIMITER $$ USE `local_hnyz`$$ DROP FUNCTION IF EXISTS `init_data`$$ CREATE DEFINER=`root`@`localho ...

  5. Spring Boot原理

    Spring 钩子之BeanFactoryPostProcessor和BeanPostProcessor的源码学习 https://www.jianshu.com/p/a90a3e617ba6 spr ...

  6. SaltStack事件驱动 – event reactor

    Event是SaltStack里面的对每个事件的一个记录,它相比job更加底层,Event能记录更加详细的SaltStack事件,比如Minion服务启动后请求Master签发证书或者证书校验的过程, ...

  7. 正则表达式中 /s 可以帮助“.”匹配所有的字符,包括换行,从而实现【\d\D】的功能

    正则表达式中 /s 可以帮助“.”匹配所有的字符,包括换行,从而实现[\d\D]的功能

  8. iOS 有关二维码

    一.把相应的URL生成二维码 利用有关图像变成的框架 #import <CoreImage/CoreImage.h> 步骤:实例化二维码滤镜---->恢复滤镜属性---->将字 ...

  9. day22- hashlib模块-摘要算法(哈希算法)

    # python的hashlib提供了常见的摘要算法,如md5(md5算法),sha1等等.摘要:digest # 摘要算法又称哈希算法.散列算法. # 它通过一个函数,把任意长度的数据(明文)转换为 ...

  10. 系统学习javaweb重点难点2--.JavaScript中的正则对象简述和正则对象使用注意事项。

    注意:只是简述,对正则对象的了解目前还不是很深刻,日后详细了解了再来修改. 正文: 正则对象 首先,我们要了解一下什么是正则对象: 正则表达式,又称规则表达式.(英语:Regular Expressi ...