Skip to content

YuWeiKuo/HexoBackUp

Repository files navigation

HexoBackUp 筆記

我的Hexo 備份

Hexo網址

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

指令s

./hexoc.sh s

會一次性執行

hexo clean && hexo g && hexo s 

指令d

./hexoc.sh d

則會一次性執行

hexo clean && hexo g && hexo d 

EJS

參考來源 EJS

基礎用法

<% %>

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

<%= %>

裡面放入要輸出的值

EX:

<% if (user) { %>
  <h2><%= user.name %></h2>
<% } %>

自定義分割符 delimiter

let ejs = require('ejs'),
    users = ['geddy', 'neil', 'alex'];

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

其中

{delimiter: '?'}

意思是將符號%改為?

Hexo-renderer-marked

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

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

# Site
title: 隨遇而安
subtitle: ''
description: ''
keywords: William Kuo
author: William Kuo
language: zh-CN
timezone: 

則相對應的hexo config.參數為

config.title
config.subtitle
config.description
config.keywords
config.author
config.language
config.timezone

如果是

theme.favicon.small
theme.favicon.median
theme.favicon.apple_touch_icon
theme.favicon.safari_pinned_tab
theme.favicon.msapplication

等等,則是在theme檔案夾裡zhaoo(選用的主題)的_config.yml的favicon設定

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

'use strict';

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

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 是全局變量網站設置 變量

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是一種過濾器)

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一些檔案。

另一個例子

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

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