為什么搭建Hexo靜態(tài)博客?
??????Hexo是一款快速、簡(jiǎn)潔而且高效的博客框架,使用Markdown(或者其他渲染引擎)解析文章,在幾秒內(nèi),既可以安裝可利用的靚麗的主題生成靜態(tài)頁(yè)面
我目前只在window系統(tǒng)下面操作過(guò),Mac和linux沒(méi)有操作過(guò),不過(guò)原理應(yīng)該是一樣的,歡迎大家點(diǎn)評(píng),不過(guò)以后要是在liunx或者M(jìn)ac折騰的話(huà),相信會(huì)繼續(xù)更新噠!!
關(guān)于Markdown的使用,請(qǐng)見(jiàn)這篇文章MarkDown學(xué)習(xí)筆記
那么建立Hexo,你要具備什么知識(shí)呢?
知道npm包管理工具的基本使用了解Git原理以及使用Git知道Github page是如何實(shí)現(xiàn)的域名分流是如何操作的
其特點(diǎn)有:
- 超快速度:
Node.js所帶來(lái)的超快生成速度,讓上百個(gè)頁(yè)面在幾秒內(nèi)瞬間完成 - 支持Markdown:
Hexo 支持 GitHub Flavored Markdown 的所有功能,甚至可以整合 Octopress 的大多數(shù)插件 - 一鍵部署:
只需一條指令即可部署到 GitHub Pages, Heroku 或其他網(wǎng)站 - 豐富的插件:
Hexo 擁有強(qiáng)大的插件系統(tǒng),安裝插件可以讓 Hexo 支持 Jade, CoffeeScript。
我覺(jué)得用 大象無(wú)形,大道至簡(jiǎn) 形容最好了!Hexo太容易就運(yùn)行了呢!
那還等什么,快開(kāi)始Hexo探索之旅吧?。?/code>
勤能補(bǔ)拙是良訓(xùn),一分耕耘一分才??????——華羅庚
在本地運(yùn)行Hexo項(xiàng)目
擼碼時(shí)刻,準(zhǔn)備興奮??! 你的系統(tǒng)必須具備以下環(huán)境,否則,會(huì)安裝失敗的喲
安裝Node建議用nvm,nvm是node版本控制工具
NVM安裝成功后,執(zhí)行 nvm install stable 就可以安裝node了
1、全局安裝hexo
npm install hexo-cli -g
2、hexo命令生成一個(gè)博客雛形
hexo init blog
3、進(jìn)入blog文件夾
cd blog
4、根據(jù)package.json安裝依賴(lài)模塊
npm install
5、啟動(dòng)hexo項(xiàng)目
hexo server
你的博客可以運(yùn)行了吧,啊哈哈,有沒(méi)有一種超快的趕腳?不過(guò)Hexo遠(yuǎn)不止于此,你離真正使用Hexo搭建一個(gè)個(gè)性化博客還是很遠(yuǎn)的呢,待我慢慢道來(lái)吧。
如果想要自定義Hexo博客,請(qǐng)看我這篇文章哦 搭建Hexo博客進(jìn)階篇
運(yùn)行成功之后,把目標(biāo)轉(zhuǎn)向安裝的文件夾,文件夾目錄如下所示:
.
├── _config.yml //這里是網(wǎng)站的配置信息
├── package.json //HEXO項(xiàng)目依賴(lài)
├── scaffolds //模板文件夾
| ├──post.md //文章模板
| ├──draft.md //
| └──page.md
├── source //資源文件夾,
| ├── _drafts
| └── _posts
└── themes // 主題文件夾。Hexo會(huì)根據(jù)主題來(lái)生成靜態(tài)頁(yè)面
目錄文件解釋如下:
| 目錄/文件名 | 子文件名 | 作用 | 備注 |
|---|---|---|---|
| _config.yml | --- | 這里是網(wǎng)站的配置信息 | ---- |
| package.json | --- | HEXO項(xiàng)目依賴(lài) | 應(yīng)用程序的信息,EJS, Stylus 和 Markdown renderer 已默認(rèn)安裝,您可以自由移除。 |
| scaffolds | post,draft,page(.md) | 模版 文件夾。當(dāng)您新建文章時(shí),Hexo 會(huì)根據(jù) scaffold 來(lái)建立文件。 | 模板是指在新建的markdown文件中默認(rèn)填充的內(nèi)容。例如,如果您修改scaffold/post.md中的Front-matter內(nèi)容,那么每次新建一篇文章時(shí)都會(huì)包含這個(gè)修改。 |
| source | _drafts、_posts | 資源文件夾是存放用戶(hù)資源的地方 | 除 _posts 文件夾之外,開(kāi)頭命名為 _ (下劃線(xiàn))的文件 / 文件夾和隱藏的文件將會(huì)被忽略。Markdown 和 HTML 文件會(huì)被解析并放到 public 文件夾,而其他文件會(huì)被拷貝過(guò)去。 |
| themes | 主題配置相關(guān) | 主題 文件夾。Hexo 會(huì)根據(jù)主題來(lái)生成靜態(tài)頁(yè)面。 | --- |
Hexo的基本使用
配置
網(wǎng)站基本信息在 _config.yml 中配置 :
網(wǎng)站
Site
title: 網(wǎng)站標(biāo)題
subtitle: 網(wǎng)站副標(biāo)題
description: 網(wǎng)站描述
author: 您的名字
language: 網(wǎng)站使用的語(yǔ)言 zh-Hans,
timezone: 網(wǎng)站時(shí)區(qū) America/New_York, Japan, 和 UTC
其中,description主要用于SEO,告訴搜索引擎一個(gè)關(guān)于您站點(diǎn)的簡(jiǎn)單描述,通常建議在其中包含您網(wǎng)站的關(guān)鍵詞。author參數(shù)用于主題顯示文章的作者
網(wǎng)站時(shí)區(qū),詳情請(qǐng)見(jiàn)時(shí)區(qū)列表
網(wǎng)址
url: http://yoursite.com 網(wǎng)址
root: / 網(wǎng)站根目錄
permalink: :year/:month/:day/:title/ 文章的永久鏈接格式
permalink_defaults: 永久鏈接中各部分的默認(rèn)值
如果您的網(wǎng)站存放在子目錄中,例如
http://yoursite.com/blog,則請(qǐng)將您的 url 設(shè)為http://yoursite.com/blog并把 root 設(shè)為 /blog/。
目錄
Directory
source_dir: source 資源文件夾,這個(gè)用來(lái)存放內(nèi)容
public_dir: public 公共文件夾,這個(gè)文件夾用于存放生成的站點(diǎn)文件
tag_dir: tags 標(biāo)簽文件夾
archive_dir: archives 歸檔文件架
category_dir: categories 分類(lèi)文件夾
code_dir: downloads/code include code文件夾
i18n_dir: :lang 國(guó)際化文件夾
skip_render:跳過(guò)指定文件的渲染,您可使用 glob 表達(dá)式來(lái)匹配路徑。
public,tags,archives,categories文件夾在hexo項(xiàng)目中是不可見(jiàn)的,只有執(zhí)行Hexo generate命令時(shí),生成public靜態(tài)文件的時(shí)候才存在
我們可以看一下public文件夾的目錄信息

文章
Writing
新文章的文件名稱(chēng)
new_post_name: :title.md //File name of new posts
預(yù)設(shè)布局
default_layout: post
把標(biāo)題轉(zhuǎn)換為 title case
titlecase: false Transform title into titlecase
在新標(biāo)簽中打開(kāi)鏈接
external_link: true Open external links in new tab
把文件名稱(chēng)轉(zhuǎn)換為 (1) 小寫(xiě)或 (2) 大寫(xiě)
filename_case: 0
顯示草稿
render_drafts: false
啟動(dòng) Asset 文件夾
post_asset_folder: false
把鏈接改為與根目錄的相對(duì)位址
relative_link: false
顯示未來(lái)的文章
future: true
代碼塊的位置
highlight:
enable: true
line_number: true
auto_detect: false
tab_replace:
分類(lèi)標(biāo)簽
Category & Tag
default_category: uncategorized
category_map:
tag_map:
時(shí)間/日期格式
Date / Time format
date_format: YYYY-MM-DD
time_format: HH:mm:ss
分頁(yè)
Pagination
per_page: 10
pagination_dir: page
擴(kuò)展
Extensions
Plugins: https://hexo.io/plugins/
Themes: https://hexo.io/themes/
theme: yelee
一鍵部署
Deployment
deploy:
type:
Hexo基本指令
新建文章:
hexo new [layout] <title>
注意:沒(méi)有設(shè)置layout時(shí)候,默認(rèn)使用 _config.yml 中的 default_layout 參數(shù)代替,如果標(biāo)題包含空格,請(qǐng)用引號(hào)括起來(lái)生成靜態(tài)文件:
hexo generate,簡(jiǎn)寫(xiě) hexo ghexo g -d,文件生成后立即部署網(wǎng)站hexo g -w(--watch), 文件生成后件監(jiān)視文件改動(dòng)發(fā)表草稿
hexo publish [layout] <filename>本地啟動(dòng)服務(wù)
hexo s默認(rèn)4000端口hexo s -p(--port) 8888 -s(--static) -l(--log)
重設(shè)端口,啟用靜態(tài)文件,啟動(dòng)日記記錄,使用覆蓋記錄格式部署網(wǎng)站
hexo delpoy渲染文件
heox render <file1> [file2] -o pathpath設(shè)置輸出路徑從其他博客系統(tǒng)遷移內(nèi)容
hexo migrate <type>清除緩存(一般主題改變后使用)
hexo clean
tips:清除緩存文件 (db.json) 和已生成的靜態(tài)文件 (public)。在某些情況(尤其是更換主題后),如果發(fā)現(xiàn)您對(duì)站點(diǎn)的更改無(wú)論如何也不生效,您可能需要運(yùn)行該命令。列出網(wǎng)站資料
hexo list <type>顯示版本
hexo version
同步部署到Github Pages和Coding Pages
Github Pages原理
完成github部署,首先你得有一個(gè)github賬號(hào),關(guān)于git的使用可以參考廖雪峰的git教程,講的很詳細(xì),算是入門(mén)的好教程了,更詳細(xì)的請(qǐng)參考git官網(wǎng)
在這里我默認(rèn)大家已經(jīng)有賬號(hào),并且完成了SSH KEY配置,這個(gè)SSH KEY的作用在,讓你的git識(shí)別你的電腦,這樣你才可以推送遠(yuǎn)程。
好了廢話(huà)不多說(shuō),我來(lái)講述Github pages運(yùn)行原理啦
首先,還是老樣子,Github Pages官網(wǎng),這里可以了解Github pages是什么,我在這里說(shuō)說(shuō)我的見(jiàn)解吧
//視頻代碼
<div align=center>
<p style="font-size:30px;color:green;">What is Github Pages?<p>
<iframe width="853" height="480" src="https://www.youtube.com/embed/2MsN8gpT6jY" frameborder="0" allowfullscreen></iframe>
</div>
以上視頻說(shuō)了什么是github pages,其實(shí) github pages 是對(duì)一個(gè)靜態(tài)資源的訪問(wèn),相當(dāng)于文件服務(wù)器,我們用 node 也可以做一個(gè)文件服務(wù)器,Hexo通過(guò)生成靜態(tài)資源文件目錄 public,把 public 目錄下的內(nèi)容推送到 git 遠(yuǎn)程的 gh-pages 分支,就完成了 github pages 的操作,之后我們可以通過(guò) https://username.github.io/repos 來(lái)訪問(wèn)你的靜態(tài)資源了,就是這么簡(jiǎn)單
注意點(diǎn):要想通過(guò)github pages來(lái)訪問(wèn)你的資源,有兩種做法:
- 新建一個(gè)倉(cāng)庫(kù),把本地資源直接推送到遠(yuǎn)程倉(cāng)庫(kù)的
gh-pages分支,此時(shí)你的站點(diǎn)就在https://username.github.io/repos,repos 子目錄了 - 新建一個(gè)倉(cāng)庫(kù),倉(cāng)庫(kù)名為username.github.io,把本地資源直接推送東master分支,此時(shí)你的站點(diǎn)是在
https://username.github.io/就是根目錄了,但是你的資源在repos目錄下,所以記得引用本地資源要這么寫(xiě)href='/public/xxx.img'
至于coding page跟github同樣是采用git版本控制的,而且coding page操作簡(jiǎn)單,這里不說(shuō)了,注意ssh key的配置,否則你是無(wú)法推送的。
購(gòu)買(mǎi)域名
購(gòu)買(mǎi)域名,在這里沒(méi)什么好說(shuō)的了,只知道騰訊域名的.top 1年只要4元,挺實(shí)惠的。
買(mǎi)了域名之后,我們要把 github 和我們的域名綁定在一起,進(jìn)行雙向綁定
- 域名綁定Github
買(mǎi)了域名之后,都會(huì)有域名解析服務(wù),我們就把域名解析設(shè)置在你的https://username.github.io/repos網(wǎng)址就可以了,這樣,當(dāng)你訪問(wèn)xxxx.top的時(shí)候,就會(huì)解析到你的github地址上去。也就是說(shuō)你買(mǎi)的域名可以用了哈。 -
github pages綁定你的域名
這個(gè)做法,原理很簡(jiǎn)單,只要在倉(cāng)庫(kù)的根目錄添加一個(gè)文件,文件名為CNAME,文件內(nèi)容就寫(xiě)你買(mǎi)的域名,這樣就OK了。
但是,注意了,因?yàn)槟忝看螌?xiě)完文章的時(shí)候,都要部署,所以建議把
CNAME文件放在在 HEXO 的source文件夾內(nèi),這樣,每次部署的時(shí)候,source根目錄的文件就會(huì)放在public根目錄下了,一樣達(dá)到了目的
大功告成了嗎?哈哈,并沒(méi)有,我們做到這一步,無(wú)論是訪問(wèn)xxx.top還是訪問(wèn)https://username.github.io/repos都會(huì)跳轉(zhuǎn)到xxx.top,但是注意,服務(wù)器在國(guó)外 :blush:
我們?yōu)槭裁匆瑫r(shí)部署到兩個(gè)地方呢?
距離阻擋不了相思,還是得有備胎!
部署兩個(gè)地方,現(xiàn)在是沒(méi)什么好處了,之前因?yàn)?Coding pages 的服務(wù)器在國(guó)內(nèi),那么國(guó)內(nèi)的用戶(hù)通過(guò)域名分流可以訪問(wèn) Coding pages,而國(guó)外的用戶(hù),域名分流,可以訪問(wèn)到 Github pages,但是現(xiàn)在 Coding pages 的服務(wù)器在香港,這樣一來(lái),也沒(méi)什么好處了,還有就是百度爬蟲(chóng)是爬取不到 github page 的資源的,但是可以爬取到 Coding page 的,所以,這樣一來(lái),我們的網(wǎng)站離百度收錄進(jìn)了一步,具體要讓我們的網(wǎng)站被百度收錄,還是需要專(zhuān)門(mén)去研究SEO了,這里不介紹了。
下面介紹如何設(shè)置,還記得配置網(wǎng)站信息在那個(gè)文件嗎?在_config.yml里面

這樣我們就可以通過(guò)hexo d -g一鍵部署啦
hexo g hexo d分成兩步也可以
參考資料
- Hexo官方網(wǎng)站?:?https://hexo.io/
- Github pages ?:?https://pages.github.com/