从0搭建github.io网页

点击跳转到🔗我的博客文章目录

从0搭建github.io网页

文章目录

  • 从0搭建github.io网页
    • 1.成果展示
      • 1.1 网址和源码
      • 1.2 页面展示
    • 2.new对象
      • 2.1 创建仓库
    • 3.github.io仓库的初始化
      • 3.1 千里之行,始于足下
      • 3.2 _config.yml
      • 3.3 一点杂活
    • 4.PerCheung.github.io.page
      • 4.1 文件目录介绍
      • 4.2 打包替换PerCheung.github.io
    • 5.技术细节
      • 5.1 markdown文件怎么支持目录?
        • 5.1.1 修改_config.yml
        • 5.1.2 修改markdown文件
      • 5.2 搜索功能的实现

1.成果展示

在我的理解里,github.io,不是博客,这是服务器,他是一个可以在路径https://percheung.github.io/下存放一切的增强版nginx服务器。这篇博客我会讲很多东西,从0讲到我搭建完成。

1.1 网址和源码

本项目用vue搭建。

我的博客网址为🔗https://percheung.github.io

博客的源码仓库网址为https://github.com/PerCheung/PerCheung.github.io

搭建源码页面的仓库网址为https://github.com/PerCheung/PerCheung.github.io.page

1.2 页面展示

主页 index

image-20240102224451211

从上到下有什么功能就不讲了,点击第二个蓝色文件夹图标,进入博客。搜索框支持查找博客内容。

image-20240102224613654

点击即可进去查看文章,这个github.io最棒的地方就是它对markdown文档的在线阅读支持。

image-20240102224754616

下面开始讲讲我如何搭建起这个主页的。

2.new对象

我就默认你已经有GitHub账户了。面向对象编程来说,第一步当然是创造对象,下面将github.io仓库的创建。

2.1 创建仓库

进入https://github.com/new,如图。新建仓库{你的GitHub账户名}.github.io,记得勾选public。

image-20231226165946916

就这么简答,你已经获得了链接为{你的GitHub账户名}.github.io的主页,属于你!

3.github.io仓库的初始化

我不知道大家创建仓库后,仓库内容是什么样的,我一开始仓库里一无所有。然后在网上搜,网上还有很多教你用Hexo帮你搭建起github.io的教程,但是我一开始搭建它的时候没有选择这条路,因为太相似了,而且真的搭建成博客了。在我看来他不应该只是一个博客,只能放点文章?这太大材小用了。如果只是为了写博客,我为什么不用CSDN呢?

3.1 千里之行,始于足下

好了,下面我要从0开始了,这里什么都没有,是空的。

image-20240102225942492

最开始,我只建了一个README.md

image-20240102230045475

然后我跳转我自己的主页https://percheung.github.io,我发现,页面上有两行字

<h1>PerCheung.github.io</h1>
创建自己的GitHub博客

是的,README.md居然能被当作网页访问!但我们仅仅有.md文件可不够,md的语法不如html丰富,如果我想要页面更漂亮呢?想要页面能支持博客搜索呢?

3.2 _config.yml

我查找资料后知道,_config.yml无疑是这个项目最最重要的文件了。但仓库一开始并没有这个文件怎么办呢?答案:新建。(第一张图请忽略,因为我搭建完项目才开始写这篇博客,一开始这几乎里是空白,除了一开始我建了一个README.md)

image-20240102230451550

image-20231228171732435

加上这一句后,你再访问你自己的主页,你会发现页面变成蓝色风格了。现在官方具备如下主题。

# 主题设置
theme: jekyll-theme-architect
theme: jekyll-theme-cayman
theme: jekyll-theme-dinky
theme: jekyll-theme-hacker
theme: jekyll-theme-leap-day
theme: jekyll-theme-merlot
theme: jekyll-theme-midnight
theme: minima
theme: jekyll-theme-minimal
theme: jekyll-theme-modernist
theme: jekyll-theme-slate
theme: jekyll-theme-tactile
theme: jekyll-theme-time-machine

最新的主题有什么具体可以参考GitHub主题页面。

设置好后,你项目里的markdown文件就会随着主题的变化而变化。这里也可以什么主题都不选,那么会有一个默认的主题。

这是我目前_config.yml文件内容。

# 标题
title: 鸿雁长飞光不度,鱼龙潜跃水成文
# 描述
description: This is my blog
# 主题风格
theme: jekyll-theme-primer
# markdown增强功能
markdown: kramdown

前三个很好理解了,看注释就知道是什么,title是主页的名字,description类似于每个人的qq签名。最后一句markdown: kramdown写上,会支持markdown目录功能等。

3.3 一点杂活

继续加文件。加.gitignore,加LICENSE

4.PerCheung.github.io.page

下面开始用vue画页面,仓库地址在PerCheung.github.io.page

4.1 文件目录介绍

我将PerCheung.github.io里的文件都放在vue项目的public下了,比如各个建的.gitignoreLICENSE_config.ymlREADME.md,然后我将我的博客文章放到了public/blog下,将博客文章引用的图片放到public/blogImg下。

image-20240102231532720

4.2 打包替换PerCheung.github.io

用项目里的README.md文件中的打包指令会打一个dist文件夹。

image-20240102231919992

image-20240102232103882

dist的内容替换掉PerCheung.github.io里所有的内容即可。

image-20240102232247956

5.技术细节

github.io开源项目,是基于jekyll,绕不开。

5.1 markdown文件怎么支持目录?

5.1.1 修改_config.yml

末尾加上

markdown: kramdown
5.1.2 修改markdown文件

开头加上

* 目录
{:toc}

5.2 搜索功能的实现

这个项目我没用后端的,执意纯前端来实现。我的方法如下。

在文件夹public/blog下,写了一个go文件,文件名叫toc.go,代码如下

package mainimport ("encoding/json""io/ioutil""path/filepath""strings"
)func main() {files, err := ioutil.ReadDir(".")if err != nil {panic(err)}var fileNames []stringfor _, file := range files {if file.IsDir() {continue}name := strings.TrimSuffix(file.Name(), filepath.Ext(file.Name()))if name != "toc" {fileNames = append(fileNames, name)}}jsonData, err := json.Marshal(fileNames)if err != nil {panic(err)}err = ioutil.WriteFile("toc.json", jsonData, 0644)if err != nil {panic(err)}
}

这个代码会将同级目录的文件统计出来,去掉文件后缀,转成一个toc.json。我用命令

go build -o toc.exe toc.go

将go代码打成了exe文件,然后就把go代码删掉了,然后双击执行toc.exe会产生toc.json。

json内容如下。

["HTML5学习记录","markdown各种语法测试","初步领悟C指针","卓别林的演讲","如何搭建github.io网页","搭建多人聊天室(保姆级教学,从0开始)","正则表达式笔记"]

这个json是一个字符串数组,内容就是markdown文件名。

然后把他放到vue项目的src/views/TOC.vue里,内容在

data() {return {search: '',toc: ["HTML5学习记录", "markdown各种语法测试", "初步领悟C指针", "卓别林的演讲", "如何搭建github.io网页", "搭建多人聊天室(保姆级教学,从0开始)", "正则表达式笔记"]};}

然后借助搜索框,用search对toc循环出的item做筛选,就实现了搜索功能。

<el-inputsize="small"v-model="search"prefix-icon="el-icon-search"placeholder="搜索文章">
</el-input>
<div class="custom_card" v-for="item in filteredToc" :key="item"><el-link :href="getLink(item)":underline="false"target="_blank"><i class="el-icon-paperclip"></i>{{ item }}</el-link>
</div>
filteredToc() {return this.toc.filter(item =>!this.search || item.toLowerCase().includes(this.search.toLowerCase()));}

至此,不讲了。博客的搭建是需要自己钻研学习的,更加细枝末节的地方我想不到还有什么好讲的,只能在实际操作中,自己掌握吧。

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

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

相关文章

Linux 命令echo

命令作用 输出一行字符串在shell中&#xff0c;可以打印变量的值输出结果写入到文件在显示器上显示一段文字&#xff0c;起到提示的作用 语法 echo [选项] [字符串] 参数 字符含义-n不自动换行-e解释转义字符-E不解释转义字符 如果-e有效&#xff0c;则识别以下序列&…

SpringBoot 项目如何生成 swagger 文档

推荐使用 springdoc-openapi 的理由 1、springdoc-openapi 是 spring 官方出品&#xff0c;与 springboot 兼容更好&#xff08;springfox 兼容有坑&#xff09; 2、springdoc-openapi 社区更活跃&#xff0c;springfox 已经 2 年没更新了 3、springdoc-openapi 的注解更接近 …

(一)Matlab数值计算基础

目录 1.1Matlab命令组成 1.1.1基本符号 1.1.2功能符号 1.1.3常用命令 1.1Matlab命令组成 1.1.1基本符号 #提示运算符&#xff0c;表示软件处于准备就绪状态。在提示符号后输入一条命令或者一段程序后按Enter键&#xff0c;软件将给出相应的结果 >> *…

【Proteus仿真】【Arduino单片机】汽车尾气检测报警系统

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器&#xff0c;使用按键、LCD1602液晶、蜂鸣器模块、CO、NOx、HC和PM2.5气体传感器等。 主要功能&#xff1a; 系统运行后&#xff0c;LCD1602显示CO、NOx、HC和…

手机录屏没有声音?让你的录屏有声有色

“有人知道手机录屏怎么录声音吗&#xff1f;今天录制了一个小时的直播视频&#xff0c;后面查看的时候发现没有声音&#xff0c;真的非常崩溃&#xff0c;想问问大家有没有办法&#xff0c;解决这个问题。” 在手机录屏的过程中&#xff0c;有时候我们可能会面临录制视频没有…

Spring技术内幕笔记之IOC的实现

IOC容器的实现 依赖反转&#xff1a; 依赖对象的获得被反转了&#xff0c;于是依赖反转更名为&#xff1a;依赖注入。许多应用都是由两个或者多个类通过彼此的合作来实现业务逻辑的&#xff0c;这使得每个对象都需要与其合作的对象的引用&#xff0c;如果这个获取过程需要自身…

从0开始搭建清华ChatGLM3 6b大模型(Windows RTX4090版)

目录 1、硬件及软件说明 2、安装Anaconda 3、安装Git版本控制 ​4、安装pytorch驱动 5、安装ChatGLM3 1、硬件及软件说明 硬件&#xff1a;主要是GPU卡内存要足够&#xff0c;本次搭建使用的RTX4090卡一张&#xff0c;单卡内存24G&#xff0c;为什么选择4090&#xff1f;…

如何在ArcGIS Pro中指定坐标系

在进行制图的时候&#xff0c;为了实现某些特定的效果&#xff0c;需要指定特定的坐标系&#xff0c;但是现有的数据可能不是所需要的坐标系&#xff0c;这时候就需要对现有的数据坐标系进行处理&#xff0c;这里为大家介绍一下ArcGIS Pro中指定坐标系的方法&#xff0c;希望能…

STM32存储左右互搏 SPI总线读写FRAM MB85RS2M

STM32存储左右互搏 SPI总线读写FRAM MB85RS2M 在中低容量存储领域&#xff0c;除了FLASH的使用&#xff0c;&#xff0c;还有铁电存储器FRAM的使用&#xff0c;相对于FLASH&#xff0c;FRAM写操作时不需要预擦除&#xff0c;所以执行写操作时可以达到更高的速度&#xff0c;其…

蓝牙物联网漏洞攻击的几种方式?

在物联网日益普及的今天&#xff0c;蓝牙技术的广泛应用为我们的生活带来了诸多便利。然而&#xff0c;正如一枚硬币有两面&#xff0c;蓝牙技术的普及也带来了新的安全挑战。近日&#xff0c;一项关于蓝牙物联网漏洞攻击的研究引起了广泛关注。这项研究揭示了蓝牙物联网所面临…

机器视觉在食品安全检测领域的应用与展望

​随着人们生活水平的提高&#xff0c;对食品安全的要求也越来越高。在这种背景下&#xff0c;机器视觉技术作为一种高效、准确的自动化检测手段&#xff0c;在食品安全检测领域扮演着越来越重要的角色。机器视觉系统通过模拟人眼的视觉功能&#xff0c;借助相机和计算机视觉算…

魅族手机怎么录屏?高清视频,轻松录制!

“有人知道魅族手机怎么录屏吗&#xff0c;新买的魅族手机&#xff0c;用了几天感觉挺流畅的&#xff0c;功能也很齐全&#xff0c;最近因为工作原因&#xff0c;需要用到录屏功能&#xff0c;但是我不知道怎么打开&#xff0c;就想问问大家&#xff0c;魅族手机怎么录屏呀。”…

2024 年 8 款值得收藏的免费 Android 数据恢复软件

如果你发现手机数据全部被删除&#xff0c;先别慌&#xff0c;今天这个视频就来教你如何恢复。 随着市场上数据恢复软件的可用性不断增加&#xff0c;很难选择哪一款是最好的。今天&#xff0c;我们精心挑选了8个最佳免费Android数据恢复软件。他们肯定会帮助你决定最适合你需…

JAVA对象、List、Map和JSON之间的相互转换

JAVA对象、List、Map和JSON之间的相互转换 1.Java中对象和json互转2.Java中list和json互转3.Java中map和json互转 1.Java中对象和json互转 Object obj new Object(); String objJson JSONObject.toJSONString(obj);//java对象转json Object newObj JSONObject.parseObject(…

引导过程的解析以及教程za

bios加电自检------mbr--------grub-------加载内核文件------启动第一个进程 bios的主要作用&#xff1a;检测硬件是否正常&#xff0c;然后根据bios中的启动项设置&#xff0c;去找内核文件 boot开机启动项顺序&#xff0c;你可以把内核文件放在何处&#xff1f; 1.硬盘 …

ChatGPT 进行 SEO的使用技巧

搜索引擎优化 (SEO) 是使网站对搜索引擎友好的一种不断发展的实践。 自搜索引擎和新兴技术的发展以来&#xff0c;它从未保持不变。 最近发布的 ChatGPT 是一种人工智能对话工具&#xff0c;似乎在搜索引擎优化方面有很好的应用。 从创建吸引人的标题到只需一个简短的提示就可…

QML 中自定义虚拟键盘

作者&#xff1a;billy 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 前言 我们知道 Qt 中虚拟键盘模块遵循的是 GPL 协议&#xff0c;是不可用于商业发布的。如果项目中使用了 Qt 自带的虚拟键盘&#xff…

解决java接口使用spring-validation验证入参类型为List校验不生效的问题

由于 List 是接口,无法直接用于参数验证,但可以通过实现类重写 List 接口,把此实现类作为校验dto即可 dto标记: 一、直接使用 List 入参类型,不生效示例: @ApiOperation(value = "公共测试接口")@PostMapping("/testPublicApi")public CommonResult&…

vue +elementui 项目登录通过不同账号切换侧边栏菜单的颜色

前景提要&#xff1a;要求不同权限账号登录侧边栏颜色不一样。分为 theme&#xff1a;1代表默认样式&#xff0c;theme:2代表深色主题样式。 1.首先定义一个主题文件 theme.js&#xff0c;定义两个主题样式 // 主要是切换菜单栏和菜单头部主题的设计&#xff0c;整体主题样式切…

【7z压缩包】7z压缩包没密码怎么办

7z压缩包设置了密码&#xff0c;解压的时候就需要输入正确对密码才能顺利解压出文件&#xff0c;正常当我们解压文件或者删除密码的时候&#xff0c;虽然方法多&#xff0c;但是都需要输入正确的密码才能完成。忘记密码就无法进行操作。 那么&#xff0c;忘记了7z压缩包的密码…