Ye xin

生而无畏 战至终章

  • 首页
  • 归档
所有文章 关于我

Ye xin

生而无畏 战至终章

  • 首页
  • 归档

浅谈Hexo

2020-01-07
本文阅读量:2

一、什么是Hexo

官网:https://hexo.io/zh-cn/

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

可以说Hexo是一个基于node.js的博客工具,通过相应的命令将主题模板和写作内容相结合,生成静态页面,并上传至服务器。

二、Hexo命令

常用命令:

hexo init  # 初始化
hexo new "postName" # 新建文章
hexo new page "pageName" # 新建页面
hexo generate # 生成public目录
hexo server # 开启本地预览访问端口(默认端口4000)
hexo deploy # 部署到GitHub
hexo clean # 清除生成内容
hexo help # 查看帮助
hexo version # 查看Hexo的版本

部分简写:

hexo n == hexo new
hexo g == hexo generate
hexo s == hexo server
hexo d == hexo deploy

组合命令:

hexo s -g  # 生成并本地预览
hexo d -g # 生成并上传

三、文件目录

初始化后生成的目录如下:

├── _config.yml
├── package.json
├── scaffolds
├── source
  ├── _drafts
  └── _posts
└── themes

_config.yml

网站的配置信息,可配置大部分的参数。

package.json

应用程序信息。EJS, Stylus 和 Markdown renderer 已默认安装,您可以自由移除。

scaffolds

模版文件夹。当您新建文章时,Hexo 会根据 scaffold 来建立文件。

Hexo的模板是指在新建的文章文件中默认填充的内容。当修改scaffold/post.md中的Front-matter内容,那么每次新建一篇文章时都会包含这个修改。

source

资源文件夹是存放用户资源的地方。除 posts 文件夹之外,开头命名为 (下划线)的文件/文件夹和隐藏的文件将会被忽略。Markdown 和 HTML 文件会被解析并放到public 文件夹,而其他文件会被拷贝过去。

themes

主题 文件夹。Hexo 会根据主题中的模板引擎和写作内容来生成静态页面。

四、工作原理

可以想一下,从hexo init到hexo deploy,发生了什么事?

1. hexo init

执行此条命令可以理解为在本地生成了一个博客模板仓库,这个仓库里有网站的模板引擎、博客主题的模板引擎、存放文章或资源的资源文件夹等。此时还没有生成要展现的html网页。

模板引擎的作用,就是将界面与数据分离。最简单的原理是将模板内容中指定的地方替换成数据,实现业务代码与逻辑代码分离。

2. hexo generate

这是一个将我们的数据和界面相结合生成静态文件的过程。将博客仓库里的主题网页模板(界面)和Markdown所写的文章内容(数据)相结合,生成了一个名为public的文件夹,文件夹里包括了由html、js、css、img建立的纯静态文件,可以通过index.html作为入口访问。

Hexo的模板引擎默认是使用ejs编写的。hexo首先会解析 md 文件,然后根据 layout 判断布局类型,再调用其他的文件,最终生成html 页面。这样每一块的内容都是独立的,可以提高代码的复用性。

模板引擎文件在主题下的 layout 文件夹下,不作详述。

3. hexo deploy

根据_config.yml中配置的git仓库地址,将public文件上传至GitHub中,再由GitHub提供的Page服务呈现出可外网访问的最终界面。

换个角度,从Markdown到html可以归纳为两次模板渲染

渲染过程 输入 模板引擎 输出
第一次 md文件 yml和markdown article:{
title:
date:
tags:
content:}
第二次 1.article对象
2.themes中的文件
themes/layouts
下的文件格式
public文件夹

第一次渲染主要目的就是给article对象添加title,content等属性,为第二次渲染提供准备。

第二次渲染需要引入对应模板文件格式的插件,将article和主题模板引擎相结合,生成public文件,这个文件是只读的,包含了整个博客网站的html, css, js, images。里面的所有内容都是根据模板引擎来生成的,所以想要修改内容需找到相关的模板进行修改后再生成即可。

Hexo和Github Page的联系

generate-deploy

五、总结

简单来说 Hexo 就是生成静态页面的工具,将我们使用 Markdown 编写的内容与使用yaml 语言作配置文件、 ejs 作模板引擎的主题模板相结合,生成 HTML 静态文件。并且通过 Github Pages 将静态页面一键部署展现。

六、参考文章

  • 浅析 Hexo 搭建博客的原理

  • Hexo的工作原理探究

赏

谢谢你请我吃糖

支付宝
微信
  • hexo
  • 学习笔记

扫一扫,分享到微信

微信分享二维码
图书管理系统踩坑记录
个人博客搭建
  1. 1. 一、什么是Hexo
  2. 2. 二、Hexo命令
    1. 2.1. 常用命令:
    2. 2.2. 部分简写:
    3. 2.3. 组合命令:
  3. 3. 三、文件目录
    1. 3.0.1. 初始化后生成的目录如下:
  4. 3.1. _config.yml
  5. 3.2. package.json
  6. 3.3. scaffolds
  7. 3.4. source
  8. 3.5. themes
  • 4. 四、工作原理
    1. 4.1. 可以想一下,从hexo init到hexo deploy,发生了什么事?
      1. 4.1.1. 1. hexo init
      2. 4.1.2. 2. hexo generate
      3. 4.1.3. 3. hexo deploy
    2. 4.2. 换个角度,从Markdown到html可以归纳为两次模板渲染
    3. 4.3. Hexo和Github Page的联系
  • 5. 五、总结
  • 6. 六、参考文章
  • © 2023 Ye xin    网站备案号:苏ICP备19068539号    网站访问量:613次    网站访客数:469人次
    Hexo Theme Yilia
    • 所有文章
    • 关于我

    tag:

    • 心路历程
    • Python
    • MySQL
    • 编码
    • hexo
    • Django
    • css
    • git,github
    • 职场
    • 机器学习
    • 求职
    • 考研
    • 职业规划
    • 网站
    • github
    • SQLserver
    • ORM
    • uwsgi
    • nginx
    • 前端
    • 后端
    • 文件流
    • 爬虫
    • pandas

      缺失模块。
      1、请确保node版本大于6.2
      2、在博客根目录(注意不是yilia根目录)执行以下命令:
      npm i hexo-generator-json-content --save

      3、在根目录_config.yml里添加配置:

        jsonContent:
          meta: false
          pages: false
          posts:
            title: true
            date: true
            path: true
            text: false
            raw: false
            content: false
            slug: false
            updated: false
            comments: false
            link: false
            permalink: false
            excerpt: false
            categories: false
            tags: true
      

    • 如何拒绝offer

      2020-12-19

      #职场

    • 职业规划

      2020-12-16

      #求职#考研#职业规划

    • 机器学习笔记

      2020-07-12

      #机器学习

    • 数据清洗

      2020-05-29

      #pandas

    • 数据采集

      2020-05-26

      #爬虫

    • 图片文件的前后端传递

      2020-04-27

      #前端#后端#文件流

    • 利润绩效项目总结

      2020-04-16

      #Django

    • Django项目部署

      2020-03-28

      #Django#uwsgi#nginx

    • Django学习笔记

      2020-03-12

      #Django

    • Django's ORM

      2020-02-23

      #Python#Django#ORM

    • Django的Form组件

      2020-02-17

      #Django

    • 将scss编译为css

      2020-02-10

      #css

    • 使用Git进行项目版本的迭代管理

      2020-02-03

      #git,github

    • MySQL远程连接与编码问题

      2020-01-16

      #Python#MySQL#编码

    • 图书管理系统踩坑记录

      2020-01-10

      #Python#Django#SQLserver

    • 浅谈Hexo

      2020-01-07

      #hexo

    • 个人博客搭建

      2019-12-28

      #hexo#网站#github

    • 初来乍到 请多关照

      2019-12-20

      #心路历程

    鄙人在读大四学生

    水平拙劣
    还请多指教[抱拳]!

    578451004@qq.com

    感谢