跳到主要内容

免费的搭建一个自己的博客

想要一个自己的博客,有没有钱买一个自己的服务器怎么办。

那么可以首先考虑 Github Page 这种形式的静态页面挂载。这样当 Github Page 的加载速度已经满足不了的时候,也可以将网站的挂载至自己的域名和服务器。

提示

静态页面就是实际已经存在的页面,不能在页面上运行程序。仅仅做展示用的博客正好是这样的。

那么如何从零开始搭建一个免费的博客呢。

搭建博客的流程

graph TD A[编写页面] --> B[优化编译] --> C[部署网址]

技术选型

为了方便将自己的优质博客发布到其他网站上,博客的撰写格式应该是 markdown,也就.md结尾的文件形式。同时为了减少开发页面的工作量,可以选择一个成熟的框架。

这里我选择的是vuepress@2.0框架。

vuepress已经讲了为什么使用vuepress框架。我这里只讲我为什么不用2.0不用1.0的一些原因。

  • 2.0的文档更加详尽
  • 2.0的配置文件支持ts(很重要,1.可以通过ts类型文件查看配置而不是只能搜文档,2.错误配置的时候静态类型也能快速地检查出来)
  • vite的打包支持(1.更加快速 2.配置文件改变后能热加载替换 @1.0只能重新启动,配置过vuepress的时候会很痛苦)

快速地搭建及部署

由于这方面vuepress的文档已经很详尽了,这里可以直接按照他的官方文档来:

快速上手vuepress

部署至GitHub pages

完成后,我的博客地址预览:点击

附:一些快速的配置

import { defineUserConfig } from "vuepress";
import { defaultTheme } from "@vuepress/theme-default";
import backToTopPlugin from "@vuepress/plugin-nprogress";

export default defineUserConfig({
base: "/Blog/", // 网站的基础地址
head: [ // 网站的小图标
[
"link",
{
rel: "icon",
href: "./avator.png",
},
],
],
title: `op-chen's Blog`, // 博客的title
description: "op-chen's Blog", // 博客的介绍
plugins: [backToTopPlugin()], // 快速返回Top的插件
theme: defaultTheme({
logo: "./avator.png", // 导航栏左上角的logo
darkMode: true, // 暗黑模式开启
navbar: [ // 导航栏的额外按钮
{
text: "Home",
link: "/",
},
],
sidebar: { // 侧边栏目录
"/": [
{
text: "JS相关",
collapsible: true,
children: ["/Js/handwrite"],
],
},
}),
});

自动化部署(CI/CD)

很简单,网站开发好了。由于是静态页面,那么每次只要我们在本地修改完源码然后再 build,然后把build的后的源码放到github pages上就可以

可是好麻烦,自从使用过CI/CD后,一个没有自动化构建的项目是没有灵魂的!那就使用 github 的自动化流程就好了。

在本地项目中新建.github/workflows 文件,创建 learn-github-actions.yml

具体可以查看如何使用 github actions 官方文档

这里附上我的配置,标注出了可能需要自己手动的配置的选项

name: Build and Deploy
on: [push]
jobs:
build:
runs-on: windows-latest # 本地使用的 windows 系统构建
steps:
- name: Checkout 🛎️
uses: actions/checkout@v3

- name: Install and Build 🔧
run: |
npm ci
npm run build

- name: Upload Artifacts 🔺
uses: actions/upload-artifact@v1
with:
name: site
path: build # 构建后生成文件夹

deploy:
concurrency: ci-${{ github.ref }}
needs: [build]
runs-on: ubuntu-latest
steps:
- name: Checkout 🛎️
uses: actions/checkout@v3

- name: Download Artifacts 🔻
uses: actions/download-artifact@v1
with:
name: site

- name: Deploy 🚀
uses: JamesIves/github-pages-deploy-action@v4.3.2
with:
branch: gh-pages
folder: 'site' # The deployment folder should match the name of the artifact. Even though our project builds into the 'build' folder the artifact name of 'site' must be placed here.

迁移至docusaurus

因为个人原因,我将vuepress的博客迁移至docusaurus。

因为目前对react的组件封装更加熟悉,且希望精进此方面的功底

如果你希望在md中使用react组件,那么应该直接选用docusaurus而不是vuepress

谢谢!vupress