博客建站9 - hexo网站如何提升markdown文档的编辑效率和体验

news/2024/9/20 6:57:19/文章来源:https://www.cnblogs.com/luoweifu/p/18415432
  • 1. 本网站的系统架构
  • 2. 场景概述
  • 3. 影响效率的问题和解决方案
    • 3.1. 图片插入-根据文章来分类管理
      • 3.1.1. 效率问题
      • 3.1.2. 解决方案
    • 3.2. 图片插入-从剪贴板中插入图片
      • 3.2.1. 效率问题
      • 3.2.2. 解决方案
    • 3.3. 图片插入-在VSCode中预览图片
      • 3.3.1. 效率问题
      • 3.3.2. 解决方案
    • 3.4. 提交代码时自动部署
      • 3.4.1. 效率问题
      • 3.4.2. 解决办法

1. 本网站的系统架构

  • 网站示例: SunLogging
  • 服务器: 阿里云ECS
  • 服务器系统: Ubuntu 24.04 LTS
  • 博客框架: Hexo
  • 网站主题: Volantis

2. 场景概述

通过hexo搭建的博客网站,一般会用markdown来编写博客文章。我的使用场景是:

  1. 博客的素材(如图片、视频)和文档(markdown编辑的文章内容)备份在gitee代码托管平台,通过git来更新和管理。
  2. 博客的静态资源和HTML页面是部署在自己的阿里云ECS服务器上,通过nginx来提供静态资源的访问。
  3. 平时通过VSCode来写文章,用markdown来保持。文章编写完成后通过 hexo g -d 来生成HTML页面,并部署到服务器上。

在解决下面的问题之前,可以阅读《VSCode系列1-VSCode搭建Markdown编辑环境》一文,了解VSCode编辑Markdown的基本用法。

3. 影响效率的问题和解决方案

3.1. 图片插入-根据文章来分类管理

hexo 默认的图片插入方式是:在 source 目录下新建一个静态资源文件夹(如 source/images),在此目录下保存图片,然后在文章中引用图片时,使用相对路径(如 ![](/images/xxx.jpg))。

3.1.1. 效率问题

当文章比较多时,source/images 下会存放大量的图片,图片的管理、查找都会非常麻烦。

3.1.2. 解决方案

hexo 支持“文章资源文件夹”,可以开启这个功能,将 config.yml 文件中的 post_asset_folder 选项设为 true 来打开。

_config.yml
post_asset_folder: true

这样,每次通过 hexo new [layout] <title> 命令创建新文章时,会在与文章同级的目录下自动创建一个与文章同名的文件夹。将所有与你的文章有关的资源放在这个关联文件夹中之后,你可以通过相对路径来引用它们。如:

文章目录:

source/_posts/hello-world.md
source/_posts/hello-world/image1.jpg
source/_posts/hello-world/image2.jpg

图片引用:

[图片](image1.jpg)

3.2. 图片插入-从剪贴板中插入图片

3.2.1. 效率问题

上面我们解决了“图片根据文章分类管理”的问题,但仍然需要手动保存图片和引用图片。我们写文章的时候如果能够 截图、粘贴 的方式完成图片的插入的话,将会极大的提高我们的效率。

3.2.2. 解决方案

  1. VSCode 安装 Paste Image 插件。

  2. 自定义保存路径,在 settings.json 文件中添加以下配置:

// 设置图片保存路径:与文件同级的目录创建一个与文件同名的文件夹,在此文件夹下存放图片。
"pasteImage.path": "${currentFileNameWithoutExt}/",
// 图片插入方式:采用 asset_img 标签。currentFileNameWithoutExt是图片的描述,在下一个步骤中用特殊的作用
"pasteImage.insertPattern": "{% asset_img ${imageFileName} ${currentFileNameWithoutExt} %}"
  1. 截图然后插入图片,默认插入图片的快捷键:

Windows/Linux: Ctrl+Alt+V

MacOS: Cmd+Alt+V

插入完后,markdown文件中会增加一行类似如下代码:

{% asset_img hello-world/2024-06-25-12-21-02.png %}

3.3. 图片插入-在VSCode中预览图片

3.3.1. 效率问题

前面两步完成之后,hexo写文章时应该能快速地插入图片了,网站上也能正确渲染图片。但是这种方式插入的图片VSCode的Markdown预览功能无法识别,无法正常预览。

3.3.2. 解决方案

  1. 安装插件:Markdown Preview Enhanced。

  2. 修改 Markdown Preview Enhanced 的渲染脚本。

ctrl+shift+P 输入 Markdown Preview Enhanced: Extend Parser 调出插件的 parse.js 文件,修改其中的 onWillParseMarkdown 方法。

file

({onWillParseMarkdown: async function (markdown) {markdown = markdown.replace(/\{%\s*asset_img\s*(.*)\s*%\}/g,(whole, content) => {[imgPath, altText] = content.split(" ");// console.log("imgPath:", imgPath);// console.log("altText:", altText);// 说明:这里借助图片描述(altText)参数来表示md的文件名,因为markdown的语法需要用相对路径。result = `![](${altText}/${imgPath})`// console.log("result:", result);return result;});return markdown;},// ...
})

这样一来,我们 markdown 中的 {% assest xxx %} 代码就会在解析预览时被替换成md的图片语法,并且同样采用相对路径,图片预览成功。

3.4. 提交代码时自动部署

3.4.1. 效率问题

每次文档编写完成后,我都需要做两个动作:

  1. git commit + git push, 将文章内容提交到gitee代码托管平台,备份我的内容。
  2. hexo g -d 将文章部署到我的博客网站。

我希望把这两个动作,合并成一个动作。

3.4.2. 解决办法

  1. 在你的文档仓库的 .git/hooks 目录下有一个 pre-push.sample 文档,这是一个 pre-push 脚本的 Demo。pre-push 脚本会在执行 git push 之前,被触发执行。

  2. 创建 pre-push 并编辑内容。

# 进入 ./.git/hooks 目录
cd ./.git/hooks 
# 创建 pre-push 文件
cp ./pre-push.sample ./pre-push
# 添加执行权限
chmod +x ./pre-push
# 编辑 pre-push 文件
vim ./pre-push
#!/bin/shecho "------start pre-push------"hexo g -decho "------end pre-push------"exit 0

大家好,我是陌尘。

IT从业10年+, 北漂过也深漂过,目前暂定居于杭州,未来不知还会飘向何方。

搞了8年C++,也干过2年前端;用Python写过书,也玩过一点PHP,未来还会折腾更多东西,不死不休。

感谢大家的关注,期待与你一起成长。



【SunLogging】
扫码二维码,关注微信公众号,阅读更多精彩内容

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/797674.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

帝国cms配置数据库命令是什么

帝国CMS本身并不是通过命令行来配置数据库的,而是通过编辑配置文件来设置数据库连接信息。配置文件通常位于/e/config/config.php(对于帝国CMS 7.0及之后的版本)或/e/class/config.php(对于早期版本)。 在这些配置文件中,你需要手动编辑数据库连接参数。以下是配置文件中…

帝国CMS数据库数据表详细说明,每个表对应的数据功能说明

帝国CMS(EmpireCMS,简称ECMS)使用多个数据表来存储不同的信息。下面是一些常见的数据表及其功能说明:phome_ecms_news_doc_data:这是一个新闻归档数据副表,用于存储新闻的相关数据,如新闻的内容、作者等信息。phome_enewsad:广告数据表,用于存储广告信息,例如广告的图…

帝国CMS的多数据库配置

帝国CMS支持多数据库配置,这对于需要在同一个应用程序中处理多个数据源的情况非常有用。多数据库配置可以让你在一个帝国CMS项目中操作多个数据库,每个数据库可以有自己的配置信息。下面是关于如何配置帝国CMS以支持多数据库的一些建议:修改配置文件:配置文件通常位于/e/co…

帝国cms数据库在哪-帝国CMS

帝国CMS(EmpireCMS,简称ECMS)的数据库文件通常位于服务器上的某个特定目录内。根据提供的信息,帝国CMS数据库文件的位置大致如下:主数据库文件:empiremaker.sql:包含完整的数据结构。 empiremaker_add.sql:包含增补的数据结构。 empiremaker_config.sql:包含系统的配置…

Qml 实现星级评分组件 已发布

在现代应用程序中,星级评分是一个常见的用户界面元素,它允许用户对产品、服务或内容进行评价。 想必大家在用各种带有评分的软件中看到过这个组件: 本文将指导你如何使用 Qml 创建一个简单而美观的星级评分组件,并且支持高度自定义。【写在前面】 在现代应用程序中,星级评…

帝国cms配置数据库是什么

帝国CMS配置数据库涉及到对系统数据库连接参数的设置。为了正确配置帝国CMS以连接到数据库,你需要编辑配置文件中的相应部分。对于帝国CMS 7.0及之后的版本,数据库配置文件位于: /e/config/config.php在这个文件中,你需要设置以下几项:数据库名 (DBHOST):这是你的MySQL数…

开发nodejs RESETful api 创建项目流程

开发nodejs RESETful api 创建项目流程 1. 安装 vm-windows、node.js 和 npm 安装 Node.js 时, 建议使用版本管理器,因为版本变更速度非常快。 你可能需要根据所使用的不同项目的需要在多个 Node.js 版本之间进行切换。 Node 版本管理器(通常称为 nvm)是安装多个版本的 Nod…

帝国cms用的什么数据库

帝国CMS(EmpireCMS,简称ECMS)使用的是MySQL数据库来存储其数据。MySQL是一个广泛使用的开源关系型数据库管理系统(RDBMS),因其高性能、稳定性和易用性而受到许多Web应用的青睐,包括内容管理系统(CMS)。 帝国CMS利用MySQL数据库来存储网站的各种数据,包括但不限于文章…

软件工程课程第二次个人作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzu/SE2024这个作业要求在哪里 https://edu.cnblogs.com/campus/fzu/SE2024/homework/13253这个作业的目标 学习开发游戏学号 082200168项目名称:羊了个羊-动物版消除类小游戏 项目链接:https://github.com/luihing2004…

织梦dede如何去掉后台登陆界面广告

要去除DEDECMS(织梦CMS)后台登录界面的广告,可以通过以下步骤来实现: 步骤 1: 删除广告代码定位广告文件:广告通常位于/dede/templets/目录下的login.htm文件中。 另外,还有一个广告文件login_ad.htm,也需要处理。删除广告代码:打开login.htm文件,查找并删除以下代码:…

帝国cms后台出现“您还未登录”错误怎么办

当帝国CMS后台出现“您还未登录”的错误提示时,通常是因为用户的登录状态未能正确维持。这个问题可能由多种因素引起,以下是一些常见的解决方法: 1. 清除浏览器缓存和Cookies清除缓存:打开浏览器的设置或选项菜单,找到清除浏览数据或清除缓存的功能,选择清除所有缓存数据…

帝国cms自动刷新怎么设置

帝国CMS的自动刷新功能可以通过后台设置或使用插件来实现。下面是两种实现自动刷新的方法: 方法一:通过后台设置登录后台:登录帝国CMS的后台管理界面。进入系统设置:在后台管理界面中找到“系统设置”或类似的选项。找到缓存设置:在系统设置中,找到有关页面缓存的设置部分…