前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何构建自己的技术博客

如何构建自己的技术博客

作者头像
奋飛
发布2023-09-01 19:29:43
2460
发布2023-09-01 19:29:43
举报
文章被收录于专栏:Super 前端Super 前端

本文相关知识点:

  • markdown
  • Vuepress/vitepress
  • GitHub pages 托管服务

为什么建议搭建个人博客网站

拥有自己的技术博客,不仅可以提升自己的技术能力,还可以提升自己的影响力,未来也可能带来一些“睡后”收益。

对于我们职场新人来说,拥有自己的技术博客一方面可以总结沉淀自己所学内容,同时也是一个不错的加分项 – 助你获得更多的面试机会。

国内目前的一些技术博客网站:CSDN、博客园、掘金、51CTO、腾讯云等等

使用这些第三方的网站是不错的选择,但长期下来,对于个人名牌建立有很大的限制。(挂广告、私域扩展)

选型

Vuepress(vue2.0)/ Vitepres(vue3.0)+ GitHub pages

  • Vuepress:vue 驱动的静态网站生成器
    • 优势:以 Markdown 为中心的项目结构,可以专注于写作;加载速度、SEO也比较友好(博客网站SEO无疑是非常重要的);支持md中写vue组件。
  • Github pages:Github 提供的用于搭建个人网站的静态站点托管服务。
    • 优势:无需购买服务器(或云服务),省去了一定费用以及服务配置等;
    • 劣势:响应速度无法跟自由服务器相比,同时搜索引擎收录不友好
在这里插入图片描述
在这里插入图片描述

markdown

目前市面上主流的文字编辑型软件,大概率都已经支持了 markdown 输入。(印象笔记、notion、语雀等等)

重视输入效率、易读性,而不是追求复杂美观的排版。

markdown 是美国科技博主 John Gruber 于 2004 年推出,是一种纯文本格式的轻量级标记语言。

代码语言:javascript
复制
*Italic*	
**Bold**	
# Heading 1	
## Heading 2	
[Link](http://a.com)	
![Image](http://url/a.png)	
> Blockquote	
* List
* List
* List
1. One
2. Two
3. Three
`Inline code` with backticks	

markdown教程:https://commonmark.org/help/

vuepress

vuepress 站点本质是一个由 vue 和 vue router 驱动的单页应用。路由会根据你的 markdown 文件的相对目录来自动生成。每个 markdown 文件都通过 markdown-it 编译为 html,然后将其作为 vue 组件的模板。

markdown-it:解析 markdown 内容

browser (CDN):

代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/markdown-it/13.0.1/markdown-it.js"
    integrity="sha512-yucm4wm2T2mZNzxtKGWQLTsMAGI+KNFRLsfFDNO9SqdMn9eauAORCybt1UnXRAAlrxJoFpdLSR9lhfuCKx22kQ=="
    crossorigin="anonymous" referrerpolicy="no-referrer"></script>

浏览器中,直接使用 window 对象访问

代码语言:javascript
复制
let md = window.markdownit({
  breaks: false
})
let content = '# title1\n## title2\n**加粗***斜体*'
let result = md.render(content)
代码语言:javascript
复制
'# title1\n## title2\n**加粗***斜体*'
代码语言:javascript
复制
<h1>title1</h1>
<h2>title2</h2>
<strong>加粗</strong>
<em>斜体</em
在这里插入图片描述
在这里插入图片描述

安装步骤

创建基础工程

代码语言:javascript
复制
mkdir ligang-blog
cd ligang-blog
npm init

依赖安装

代码语言:javascript
复制
npm install -D vuepress

添加命令(package.json):

代码语言:javascript
复制
{
 "scripts": {
   "docs:dev": "vuepress dev docs",
   "docs:build": "vuepress build docs"
 }
}

创建第一篇博文

代码语言:javascript
复制
mkdir docs
echo '# Hello World' > docs/HelloWorld.md

启动服务

代码语言:javascript
复制
npm run docs:dev

如果有报错,需要查看vue相关版本,重新安装

代码语言:javascript
复制
npm list vue
npm install vue@x.x.xx

目录结构

VuePress 遵循 “约定优于配置” 的原则,推荐的目录结构如下:

代码语言:javascript
复制
.
├── docs
│   ├── .vuepress (可选的)						      # 用于存放全局的配置、组件、静态资源等
│   │   ├── components (可选的)					  # 该目录中的 Vue 组件将会被自动注册为全局组件
│   │   ├── theme (可选的)							   # 用于存放本地主题
│   │   │   └── Layout.vue							  
│   │   ├── public (可选的)								# 静态资源目录
│   │   ├── styles (可选的)								# 用于存放样式相关的文件
│   │   │   ├── index.styl								    # 将会被自动应用的全局样式文件
│   │   │   └── palette.styl							    # 用于重写默认颜色常量,或者设置新的 stylus 颜色常量
│   │   ├── templates (可选的, 谨慎配置)		# 存储 HTML 模板文件
│   │   │   ├── dev.html									# 用于开发环境的 HTML 模板文件
│   │   │   └── ssr.html									# 构建时基于 Vue SSR 的 HTML 模板文件
│   │   ├── config.js (可选的)							# 配置文件的入口文件,也可以是 YML 或 toml
│   │   └── enhanceApp.js (可选的)				  # 客户端应用的增强
│   │ 
│   ├── README.md
│   ├── guide
│   │   └── README.md
│   └── config.md
│ 
└── package.json

基本配置

一个 VuePress 网站必要的配置文件是 .vuepress/config.js,它应该导出一个 JavaScript 对象:

代码语言:javascript
复制
module.exports = {
  title: '李刚的个人技术博客',
  description: '技术沉淀、经验分享'
}

它包含一个页头,里面包含一个标题和一个搜索框。VuePress 内置了基于 headers 的搜索 —— 它会自动为所有页面的标题、h2h3 构建起一个简单的搜索索引。

主题配置

一个 VuePress 主题应该负责整个网站的布局和交互细节。在 VuePress 中,目前自带了一个默认的主题(正是你现在所看到的),它是为技术文档而设计的。同时,默认主题提供了一些选项,让你可以去自定义导航栏(navbar)、 侧边栏(sidebar)和 首页(homepage) 等

默认主题:

在这里插入图片描述
在这里插入图片描述
首页

修改首页,修改 docs/README.md,VuePress 提供了对 YAML front matter (opens new window)开箱即用的支持,且内置了一些变量。

YAML:是一种表达数据序列化的格式。 Front matter:直译为“前置内容”,它是基于 YAML 格式的纯文本内容,放置在文档开头,用于标明文档的各种属性(元信息)。

代码语言:javascript
复制
---
home: true
heroText: null
tagline: null
author: {name: '李刚'}
footer: MIT Licensed | Copyright © 2023 [ligang](https://xxxx.xxx.com)
---

**欢迎大家来到{{ $frontmatter.author.name }}的个人技术博客站点**
  • home: true 启用主题
  • 将 heroText、tagline 的内容设置为 null 来禁用标题和副标题
  • 定义变量 author,文档中可以通过 {{ $frontmatter.xx }} 方式获取
  • 设置 footer
导航栏

.vuepress/config.js 配置文件中,通过 themeConfig.nav 增加一些导航栏链接:

代码语言:javascript
复制
// .vuepress/config.js
module.exports = {
  ...
  themeConfig: {
    nav: [
      {text: '关于我', link: '/about'},
      {text: '联系我', link: '/contact'},
      { text: '友情链接', link: 'https://ligang.blog.csdn.net/', target:'_blank', rel:'' },
      {
        text: 'vue专题',
        items: [
          {text: '文章A', link: '/vue/one'},
          {text: '文章B', link: '/vue/two'}
        ]
      }
    ]
  }
}
  • 可以通过 items 数组而不是一个单一的 link 时,它将显示为一个 下拉列表 (支持嵌套)
侧边栏

.vuepress/config.js 配置文件中,通过 themeConfig.sidebar 增加侧边栏配置:

代码语言:javascript
复制
// .vuepress/config.js
module.exports = {
  ...
  themeConfig: {
    ...
    sidebar: [
      '/',
      ['/about', '关于我'],
      ['/contact', '联系我'],
      {
        title: 'vue专题',
        path: '/vue/',
        collapsable: true,
        children: [
          ['/vue/one', '文章A'],
          '/vue/two'
        ]
      }
    ]
  }
}
  • [link, text] 指定链接文字,默认采用页面中的标题
  • 侧边栏同样可以分组,但需要按照指定文件结构
代码语言:javascript
复制
.
├─ README.md
├─ contact.md
├─ about.md
└─ vue/
   ├─ READMEvue
   ├─ one.md
   └─ two.md

可以自动开启侧边栏配置

代码语言:javascript
复制
// .vuepress/config.js
module.exports = {
  themeConfig: {
    sidebar: 'auto'
  }
}
其他一些配置
代码语言:javascript
复制
// .vuepress/config.js
module.exports = {
  nextLinks: true,				 # 上一篇链接
  prevLinks: true,				 # 下一篇链接
  
  lastUpdated: 'Last Updated',    # 最后修改时间
  
  repo: 'https:///xxx',			  # Github URL
  repoLabel: '查看源码',			  # 自定义仓库链接文字
}
博客主题

官方也提供了博客主题,

搭建 VuePress 博客的脚手架

代码语言:javascript
复制
yarn create vuepress [blogName]
# 填写必要信息
cd [blogName] && yarn

构建

代码语言:javascript
复制
yarn dev
示例:https://billyyyyy3320.com/
示例:https://billyyyyy3320.com/

GitHub pages 托管服务

直接从 github 托管,只需编辑、推送、就生效。

创建存储库:[username].github.io username是github上的用户名

将本地工程与远程仓库关联(docs/.vuepress/dist)

代码语言:javascript
复制
git remote add origin git@github.com:381510688/381510688.github.io.git
git branch -M main
git push -u origin main
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-08-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 为什么建议搭建个人博客网站
    • 选型
    • markdown
    • vuepress
      • 安装步骤
        • 目录结构
          • 基本配置
            • 主题配置
            • 博客主题
        • GitHub pages 托管服务
        相关产品与服务
        内容分发网络 CDN
        内容分发网络(Content Delivery Network,CDN)通过将站点内容发布至遍布全球的海量加速节点,使其用户可就近获取所需内容,避免因网络拥堵、跨运营商、跨地域、跨境等因素带来的网络不稳定、访问延迟高等问题,有效提升下载速度、降低响应时间,提供流畅的用户体验。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档