Hexo筆記

執行 hexoc.sh 加上指令 s 或 d

指令s

1
./hexoc.sh s

會一次性執行

1
hexo clean && hexo g && hexo s 

指令d

1
./hexoc.sh d

則會一次性執行

1
hexo clean && hexo g && hexo d 

EJS

參考來源 EJS

基礎用法

1
<% %>

裡面可以放入Javascript Code但是不會輸出

1
<%= %>

裡面放入要輸出的值

EX:

1
2
3
<% if (user) { %>
<h2><%= user.name %></h2>
<% } %>
## 自定義分割符 delimiter

1
2
3
4
5
6
7
8
let ejs = require('ejs'),
users = ['geddy', 'neil', 'alex'];

// 单个模板文件
ejs.render('<?= users.join(" | "); ?>', {users: users},
{delimiter: '?'});
// => 'geddy | neil | alex'

其中

1
{delimiter: '?'}
意思是將符號%改為?

Hexo-renderer-marked

在根目錄_config.yml 裡加上以下, 主要是lazyload

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
marked:
gfm: true
pedantic: false
breaks: true
smartLists: true
smartypants: true
quotes: '“”‘’'
modifyAnchors: 0
anchorAlias: false
autolink: true
mangle: true
sanitizeUrl: false
dompurify: false
headerIds: true
lazyload: false
prependRoot: true
postAsset: false
external_link:
enable: false
exclude: []
nofollow: false
disableNunjucks: false
descriptionLists: true
# Hexo

變量

config.參數 這裡的參數是根目錄_config.yml裡面的設定值 比如_config.yml

1
2
3
4
5
6
7
8
# Site
title: 隨遇而安
subtitle: ''
description: ''
keywords: William Kuo
author: William Kuo
language: zh-CN
timezone:

則相對應的hexo config.參數為

1
2
3
4
5
6
7
config.title
config.subtitle
config.description
config.keywords
config.author
config.language
config.timezone

如果是

1
2
3
4
5
theme.favicon.small
theme.favicon.median
theme.favicon.apple_touch_icon
theme.favicon.safari_pinned_tab
theme.favicon.msapplication
等等,則是在theme檔案夾裡zhaoo(選用的主題)的_config.yml的favicon設定

1
2
3
4
5
6
favicon:
small: /images/icons/favicon-16x16.png
medium: /images/icons/favicon-32x32.png
apple_touch_icon: /images/icons/apple-touch-icon.png
safari_pinned_tab: /images/icons/stun-logo.svg
msapplication: /images/icons/favicon-144x144.png

node_modules/hexo-server/index.js 筆記

hexo.extend.console.register

1
'use strict';

use strict 嚴格模式: 在指定代碼嚴格環境下執行

1
2
3
4
5
6
7
8
hexo.config.server = Object.assign({
port: 4000,
log: false,
// `undefined` uses Node's default (try `::` with fallback to `0.0.0.0`)
ip: undefined,
compress: false,
header: true
}, hexo.config.server);

config 是全局變量網站設置 變量

1
2
3
4
5
6
7
8
9
10
hexo.extend.console.register('server', 'Start the server.', {
desc: 'Start the server and watch for file changes.',
options: [
{name: '-i, --ip', desc: 'Override the default server IP. Bind to all IP address by default.'},
{name: '-p, --port', desc: 'Override the default port.'},
{name: '-s, --static', desc: 'Only serve static files.'},
{name: '-l, --log [format]', desc: 'Enable logger. Override log format.'},
{name: '-o, --open', desc: 'Immediately open the server url in your default web browser.'}
]
}, require('./lib/server'));

console 為控制台, 裡面有控制台命令 server 為 config的屬性, config.server start the server 為console的命令 desc 是 description (描述) option 為選項: 選項i \rightarrow hexo s -i 選項o \rightarrow hexo s -o 是架設好本地端server後在瀏覽器開啟頁面

hexo.extend.filter.register

filter 的用法是修改特定文件 server_middleware 是在文件中加入中間件 (server_middleware是一種過濾器)

1
2
3
4
5
6
hexo.extend.filter.register('server_middleware', require('./lib/middlewares/header'));
hexo.extend.filter.register('server_middleware', require('./lib/middlewares/gzip'));
hexo.extend.filter.register('server_middleware', require('./lib/middlewares/logger'));
hexo.extend.filter.register('server_middleware', require('./lib/middlewares/route'));
hexo.extend.filter.register('server_middleware', require('./lib/middlewares/static'));
hexo.extend.filter.register('server_middleware', require('./lib/middlewares/redirect'));

以上代碼為註冊名為server_middleware的過濾器,而他需要require一些檔案。

另一個例子

1
2
3
4
hexo.extend.filter.register('before_post_render', function(data){
data.title = data.title.toLowerCase();
return data;
});

註冊before_post_render過濾器,過濾器裡面的有function(data),data作為第一個形參,會傳入每一個過濾器(執行過濾器章節有介紹)。

Lazyload

在 /theme/zhaoo/source/js/script.js 設置threshold為200, 令圖片在距離屏幕200像素時提前加載。

1
2
3
4
5
6
lazyload: function () {
$("img.lazyload").lazyload({
effect: "fadeIn",
threshold: 200,
});
},

Markdown 中顯示鍵盤鍵

markdown文档中使用键盘键