基于mkdocs-material搭建个人静态博客

基于mkdocs-material搭建个人纯静态博客,没有php,没有mysql
如果你只是想安安静静的放一些技术文章,发布到个人站点或github-pages,mkdocs-material很适合你
小慢哥的原创文章,欢迎转载
- 本文仅是缩略,笔者已将详细内容发布到github上
- 可点击本文最后的"阅读更多"进行访问,或者在github上搜"cyent markdown"也可以看到
目录
- 本文概述
- mkdocs-material介绍
- 安装
- 初始化项目
- 修改主题
- 运行
- 发布到GitHub pages
- 发布到个人HTTP Server
- mkdocs.yml注意事项
- 添加页面
- 添加扩展
- markdown语法
- 其他功能
- 最佳实践
本文概述
mkdocs-material入门,包括安装、运行、发布至github-pages及个人站点
mkdocs-material介绍
符合google material ui规范的静态文档网站生成器,使用markdown进行文档书写
mkdocs
- python编写的markdown解释器、编译器,带有本地cli工具
- 自带基于Tornado的小型http服务,用于本地调试
- 内置一键式发布至GitHub Pages
- 内置mkdocs风格、readthedocs风格的主题,并支持自定义主题
- 支持调用python模块实现语法及渲染的扩展
mkdocs-material
- python模块,符合google material ui规范的mkdocs自定义主题
- 针对特定语法、功能做了渲染优化
- 根据客户端浏览器页面尺寸自动缩放,对PC、移动设备都友好
- 丰富的页面配色,多达19种主体配色和16种悬停链接文字配色
- 支持中文搜索
- 支持统计功能,如百度统计,谷歌统计
安装
pip install mkdocs mkdocs-material
若下载慢,可更换安装源为豆瓣
pip install --trusted-host pypi.douban.com -i http://pypi.douban.com/simple/ mkdocs mkdocs-material
初始化项目
mkdocs new my-project
会生成my-project目录,进入该目录里,可以看到默认放置了一些文件,包括mkdocs.yml,这是主配置文件
修改主题
mkdocs.yml里添加:
theme:
name: material
运行
# 在my-project目录里执行
mkdocs serve
通过浏览器访问本地ip的8000端口(比如http://127.0.0.1:8000/) 查看效果,如图所示

发布到GitHub pages
通过mkdocs gh-deploy自动编译出html并发布至GitHub pages,步骤如下
初始化repo
1.在github上创建一个repo,名字叫my-project(可以是其他名,这里先假设叫my-project),创建repo时候选择初始化带有README.md
2.将repo同步到本地,使用git clone
导入项目
1.将mkdocs根目录(即my-project目录)下的所有东西移到刚刚git clone下来的git目录下
2.然后可以将最早创建的mkdocs根目录(即my-project目录)删除了
发布
在本地git目录下执行
mkdocs gh-deploy
发布到个人HTTP Server
通过mkdocs build编译出html并手动同步至http server的根目录
生成站点文件
在git目录下执行命令
mkdocs build
命令执行完毕后可以看到site目录
发布至http server
将site目录里的所有东西拷贝到http server的根目录下
mkdocs.yml注意事项
由于是yaml格式,因此首先要符合yaml的语法要求
docs下需要一个index.md,作为站点首页
文档层次结构虽然可以很多层,但最佳实践是控制在2层内,最多不要超过3层,否则展示会不够友好
添加页面
在my-project/docs/里放置.md文件,可以自行组织目录结构
然后在mkdocs.yml里添加,比如这样:
nav:
- 介绍: index.md
- 安装:
- 本地环境搭建: install/local.md
- 发布至GitHub Pages: install/github-pages.md
- 发布至自己的HTTP Server: install/http-server.md
- 语法:
- 语法总览: syntax/main.md
- 标题: syntax/headline.md
- 段落: syntax/paragraph.md
- 上面的index.md就是放置在my-project/docs/index.md
- 上面的local.md就是放置在my-project/docs/install/local.md
添加扩展
只有添加了扩展,才能完美使用mkdocs-material官方支持的所有markdown语法
mkdocs.yml里添加:
markdown_extensions:
- admonition
- codehilite:
guess_lang: false
linenums: false
- toc:
permalink: true
- footnotes
- meta
- def_list
- pymdownx.arithmatex
- pymdownx.betterem:
smart_enable: all
- pymdownx.caret
- pymdownx.critic
- pymdownx.details
- pymdownx.emoji:
emoji_generator: !!python/name:pymdownx.emoji.to_png
- pymdownx.inlinehilite
- pymdownx.magiclink
- pymdownx.mark
- pymdownx.smartsymbols
- pymdownx.superfences
- pymdownx.tasklist
- pymdownx.tilde
markdown语法
mkdocs-material支持几十种markdown语法,有许多很酷炫的功能与效果,由于篇幅有限,无法在这一一展示,因此这里仅列举下所支持的主要语法
1.标题
2.段落
3.引用
4.表格
5.代码
- 行内
- 区块
- 高亮
6.字体样式
- 斜体,粗体,粗斜体
- 上标,下标
- 下划线
- 横线
- 下划线+横线
7.列表
- 无序列表
- 有序列表
- 任务列表
8.分割线
9.链接
- 普通链接
- 自动链接
- 锚点提示
10.图片
- 行内式
- 参考式
11.转义
12.高亮
- 代码高亮
- 背景高亮
13.注解
- 介绍
- 完整格式
- 空标题
- 无标题
- 无类型
- 折叠
- 11种颜色样式
- 嵌套
14.脚注
15.元信息
16.数学公式
- 介绍
- 导入js
- 用法
17.emoji
- 介绍
- 工作原理
- 最佳实践
18.特殊符号
19.嵌套
- 介绍
- 注解-注解
- 列表-列表
- 引用-引用
- 注解-代码块
- 列表-代码块
- 引用-代码块
- ×××区块-代码
- 绿色区块-代码
- 红色区块-代码
- 绿接红区块-代码
- 注解-列表-引用
- 列表-列表-引用
- 引用-引用-代码
其他功能
mkdocs-material本身还支持如下功能:
- 添加js,可用于站点统计(如百度统计,谷歌统计)
- 页面以及跳转文字的配色
- 中文搜索
最佳实践
如果希望自己所写的markdown可以兼容各个markdown编辑器,那么只需了解markdown的传统语法即可
如果想让自己所写的markdown发布到web服务器,例如GitHub Pages、自己搭建的HTTP Server,那么可以考虑使用本文所介绍的语法,以实现丰富多样的渲染效果。
笔者建议:尽量使用传统语法,只在必要时候才使用本文介绍的语法。因为排版简洁、条理清晰才能带来最舒服的阅读感受。
基于mkdocs-material搭建个人静态博客的更多相关文章
- 使用Hexo搭建Github静态博客
1. 环境环境 1.1 安装Git 默认配置就好 1.2 安装node.js 下载:http://nodejs.org/download/ 安装时直接保持默认配置即可. 2. 配置Github 1.1 ...
- Hexo搭建个人静态博客网站
前言 前段时间博客园整改,许多博客无法查看,偶然的机会接触到了许多博客框架,可用来快速搭建一个静态博客网站:最后选择使用hexo,看了不少大佬的教程,觉得挺有意思的,于是也总结了一下自己的搭建步骤,可 ...
- 基于hexo+github搭建一个独立博客
一直听说用hexo搭建一个拥有自己域名的博客是很酷炫的事情~,在这十一花上半个小时整个hexo博客岂不美哉. 使用Hexo吸引我的是,其简单优雅, 而且风格多变, 适合程序员搭建个人博客,而且支持多平 ...
- Hexo搭建Github静态博客
1. 环境环境 1.1 安装Git 请参考[1] 1.2 安装node.js 下载:http://nodejs.org/download/ 可以下载 node-v0.10.33-x64.msi 安装时 ...
- 转--利用hexo搭建个人静态博客
引用地址 可谓图文并茂,可以配合 七牛云存储(做图片等文件服务器),搭建好看的个人博客 hexo 官方指导文档 主题 官网教程 问题集锦 简书 http://blog.csdn.net/wx_9624 ...
- 搭建GithubPages静态博客踩过的坑
前言 搭建了属于自己的GitHub Page作为个人博客,上手Hexo+Material感觉比较花哨,后改用Yilia主题效果良好.期间发现并解决了一些问题,贴出值得记录的部分作为参考: 维护 书写 ...
- 搭建hexo静态博客
使用hexo搭建博客,并将博客部署到github 需要的工具 Node.js Git 一个Github账号 正式开始 在任意目录下新建一个文件夹,如blog,在该文件夹下右键打开git bash he ...
- 基于Ubunru服务器搭建wordpress个人博客
一.环境 服务器:阿里云突发性能实例 t5-1核(vCPU) 512 MB + 网络按流量收费(该服务器适用于小型网站) 系统:Ubuntu 22.04 64位Ubuntu 22.04 64位 二. ...
- 基于gitHub+hexo搭建的个人博客
文章导航 前期准备 安装hexo 修改hexo主题 自定义主题 部署本地文件到github查看 我的第一篇博客 前期准备 下载安装git命令行工具.node及npm环境 注册自己的GitHub账号 安 ...
随机推荐
- js-事件处理(重点)
1:各种常用事件: 2:简单用法: <body onLoad="javascript:alert('hello world');" onUnload="javasc ...
- 关于php初学者的理解!请大家浏览并指出不足!谢谢!
昨天开始学习php,由于之前是学习.NET的,刚接触php,就关于语法就是各种不适应,什么js,jq在脑子里一团浆糊..过了一天感觉好了点,现在有点想法,大家欢迎交流批评! 今天用php做了个登录,判 ...
- jQuery的基本概念与高级编程
年创建的一个年月面世的1.5.2版本.作为一个JavaScript库,jQuery极大程度上解决了浏览器的兼容性问题,能够在IE 6.0 +.FF 2.0 +.Safari 3.0 +.Opera 9 ...
- AI:IPPR的数学表示-CNN基本结构分析( Conv层、Pooling层、FCN层/softmax层)
类似于SVM,CNN为代表的DNN方法的边缘参数随着多类和高精度的要求必然增长.比如向量机方法,使用可以映射到无穷维的高斯核,即使进行两类分类,在大数据集上得到高精度,即保持准确率和高精度的双指标,支 ...
- raspberry pi树莓派设置
买了个pi3b 安装系统 需要class10 TF卡.读卡器 下载系统并解压Raspbianhttps://www.raspberrypi.org/downloads/raspbian/访问慢的话请用 ...
- C# 带Cookies发送请求
#region --来自黄聪 void F1() { #region --创建cookies容器 添加Cookies和对应的URl(Hots主) CookieContainer cc = new Co ...
- django分页功能,templatetags的应用
django 将不会将得到的html代码自动转化 from django.utils.html import format_html html =''' <a href='http://www. ...
- Laravel -- windows apache .htaccess https 路由重写
一: <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{SERVER_PORT} !^443 RewriteCond %{RE ...
- Apex语言(九)类的方法
1.方法 方法是对象的行为.如下表: 看书,编程,打球就是方法. 2.创建方法 [格式] 访问修饰符 返回值类型 方法名(形式参数列表){ 方法体; } 访问修饰符:可以为类方法指定访问级别. 例如, ...
- 【JavaScript游戏开发】JavaScript+HTML5封装的苏拉卡尔塔游戏(包含源码)
/** 苏拉克尔塔游戏 * 思路: * 1.棋盘设置:使用HTML5的canvas标签绘制整个棋盘 * 2.点击事件:当页面被点击时,获取点击的x,y像素点,根据此像素点进行判断,再在合适位置绘制黑红 ...