IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    Explorer\'s Guide

    Lynan发表于 2024-02-04 09:10:55
    love 0

    构建与托管

    本站使用 HEXO 构建生成静态网站文件,托管在云服务器创建的 Plesk 面板中。

    在 Plesk 中配置了 Webhook,当我提交变更到我的 Github 私有仓库以后,触发 Actions 构建网站,变更的内容将自动同步到 Plesk 网站文件夹进行更新。

    个性化

    主题

    使用 Icarus 主题。

    大屏设备可以获得最佳阅读体验。

    字体

    本站共计使用两种开源字体:

    1. LXGWWenKai
      The quick brown fox jumps over the lazy dog 敏捷的棕色狐狸跳过了懒狗
    2. SourceHanSerifCN
      The quick brown fox jumps over the lazy dog 敏捷的棕色狐狸跳过了懒狗

    字体文件由脚本收集所有用到字符简化而成,提高加载速度。

    generate-font-files.js
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    const fs = require("fs");
    const _ = require("lodash");
    const Fontmin = require("fontmin");

    const directory = "source/_posts";
    const scriptDirectory = "custom-scripts/font";
    const fontFileDirectory = `${scriptDirectory}/files`;

    const files = fs.readdirSync(directory).filter((item) => item !== ".DS_Store");
    const fonts = fs
    .readdirSync(fontFileDirectory)
    .filter((item) => item !== "index.js");

    const getLetters = () => {
    const letterMap = {};

    _.forEach(files, (file) => {
    const fileContent = fs.readFileSync(`${directory}/${file}`, "utf8");
    const letters = _.toArray(fileContent);
    _.forEach(letters, (letter) => {
    if (!letterMap[letter]) {
    letterMap[letter] = 1;
    }
    });
    });
    return Object.keys(letterMap).join("");
    };

    const currentLetters = getLetters();

    const lettersText = fs.existsSync(`${scriptDirectory}/letters.txt`)
    ? fs.readFileSync(`${scriptDirectory}/letters.txt`, "utf8")
    : "";

    if (currentLetters === lettersText) {
    return;
    }

    fs.writeFileSync(`${scriptDirectory}/letters.txt`, getLetters());

    const generateFontFile = (letters) => {
    _.forEach(fonts, (font) => {
    const task = new Fontmin()
    .src(`${fontFileDirectory}/${font}`)
    .dest("themes/icarus/source/fonts")
    .use(
    Fontmin.glyph({
    text: letters,
    hinting: false,
    })
    )
    .use(Fontmin.ttf2woff2());

    task.run(function (err, files) {
    if (err) {
    throw err;
    }
    });
    });
    };

    generateFontFile(currentLetters);

    插件

    懒加载

    使用了 hexo-lazyload-element 处理图片、视频、iframe 资源的懒加载,提升页面性能的同时避免消耗不必要的流量的。

    alt

    RSS

    使用 hexo-generator-feed 生成 /feed.xml 便于 RSS 阅读器订阅。

    你可以使用以下地址订阅内容。

    RSS
    1
    https://lynan.cn/feed.xml

    评论区

    使用 Gitalk。

    彩蛋

    CSS 动画

    iframe 交互

    页面和 iframe 之间使用了 postMessage 方式进行通信,丰富静态页面的功能。

    单独设置的文章背景

    例如关西旅行的枫叶背景。



沪ICP备19023445号-2号
友情链接