热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

创造属于自己的静态博客

可以前往我的博客阅读:https:ssshooter.com2019-020前言本文并不是从0开始使用gatsby.js搭建博客,starter使

可以前往我的博客阅读:https://ssshooter.com/2019-02...

0 前言

本文并不是从 0 开始使用 gatsby.js 搭建博客,starter 使用的是 gatsby-starter-blog。使用 gatsby-starter-blog 可以大量节省项目搭建时间,直接得到一个最简单的博客模版,这个模板的缺点是功能少,但是反过来说优点是有较高的自由度。

根据下面整个流程做好的静态博客大概长这个样:https://ssshooter.com/tag/gatsby

我从最简单的博客模板开始添加功能的原因,就是可以让自己更熟悉整个博客的构造,自己可以随心所欲地添加功能,这才是真正的自己的博客。以前用过 Wordpress 和 Hexo,可能就是因为下载下来模版就太完善了,根本不想自己研究里面的实现,然后模板不加修改样式就与其他人一摸一样,变得很没特色,所以我也失去的更新的欲望。所以自己定值博客,或许可以让自己坚持更新下去。

整个流程最主要是前面 5 步,后面的 3 步都是非必要的,其他附加功能后续可能还会有更新。这篇文章的作用是一个导航,下面只会简单概括文章内容,详细内容请点全文链接。你可以根据你的需要一步一步进行,也可以跳过熟悉的步骤。

前置知识

  • Javascript
  • React
  • graphQL(次要,即时上手也基本能看懂)

优势

  • 因为提前生成为静态文件、不涉及到数据库,所以静态相对安全、稳定、高速
  • 无后端服务,无后端相关经验也能做好(如果不做下面的语雀推送的话)
  • 搜索引擎易抓取,搜索功能可以直接借用搜索引擎(搜索时添加 site:)
  • 涉及到的知识点比较广,对开发人员开放眼界也是极好的
PS. 本教程涉及到的服务都是免费的,穷苦学生党莫慌(不过域名还是没有免费的)

1 关键文件

全文链接

这一部分主要介绍模板的下载、项目结构及其一些关键文件。主要会提到 gatsby-node.js(页面生成函数所在文件)、/src/templates/blog-post.js(生成页面所用模板)以及 gatsby-config.js(Gatsby 的配置文件)。

2 实现分页

全文链接

现成模板缺少博客最重要的功能——分页。因为分页实现十分重要,并且可以借此理解页面生成原理,所以用自己实现分页来入门 Gatsby 我觉得是个不错的选择。

实现的关键在于模板文件的修改graphQL 查询的编写。(本项目所需的 graphQL 要求不高,但是对此感兴趣的话可以深入了解一下这个查询语言,中文文档在此)

3 样式调整

全文链接

比较简单的一节,包括修复代码高亮覆盖主题样式两部分。注意一下使用全局 CSS 的 bug 就 OK 了。

4 标签系统

全文链接

标签系统实现了标签汇总页和各个标签的文章列表页,是 graphQL 查询实践的加强版,原理跟分页是一样的,不过复杂一点看起来有一丁点望而生畏。

5 博客上线

全文链接

网站上线的步骤,包括把项目部署到 netlify 和自定义域名设置相关问题与解释。

6 评论系统

全文链接

首先是因为几个出色的社会化评论服务网站都已经被墙了,然后是自己有一点对数据的占有欲,所以这一节甚至要自己搞一个评论系统。不过借助现成的 staticman,这一步也不会太麻烦。

7 文章目录

全文链接

良好的文章页面必不可少地需要一个文章导航,对不起!由于难度的误判,这个功能虽然来晚了,但是绝对不会缺席!使用 gatsby-transformer-remark 轻松解决问题~

EX 使用语雀发布到博客

全文链接

前置知识点:使用 Github API 更新仓库

比较好玩的一节,主要好玩在使用 GitHub 接口提交文件,感觉打开了新世界的大门。配合上语雀的文章发布推送绝配,于是有了这么个功能专题。

「我很懒,果然还是不想自己动手」

「我认真看完了,都看懂了,但是真的没时间做呀」

好吧...那我还是提供一个拿来即用的渠道吧?我看网上也有很多 clone 即用的博客,但是总觉得有点违背我写这个教程的初心?。所以我至少希望大家是看完文章再 clone,这么做起码还是有能力「自定义」你的博客。

以下是 clone 即用的方法:

clone 此仓库 -> https://github.com/ssshooter/...

clone 后的默认样式是这样的,也是比较简单的,功能相较于官方的 starter 加入了上述的:分页功能和标签功能,并且提供了一个简单的图库,但是评论系统(代码没有删除只是注释了)和语雀发布系统当然是没有接通的,需要的话请手动实现~

配置后部署到 netlify 即可,更新文章时在 /src/pages/ 文件夹添加文章然后推送到 GitHub 就会直接更新。

未来

本系列依然会继续更新,UI 肯定会继续调整,功能肯定会增加。想要坚持写 blog,要先喜欢自己的 blog,用心添加新功能吧!



推荐阅读
  • 本文介绍了在Linux系统中如何使用不同的命令和工具来查看和检查端口状态,包括有权限和无权限情况下的操作方法。 ... [详细]
  • 本文详细介绍了如何搭建一个高可用的MongoDB集群,包括环境准备、用户配置、目录创建、MongoDB安装、配置文件设置、集群组件部署等步骤。特别关注分片、读写分离及负载均衡的实现。 ... [详细]
  • HTML前端开发:UINavigationController与页面间数据传递详解
    本文详细介绍了如何在HTML前端开发中利用UINavigationController进行页面管理和数据传递,适合初学者和有一定基础的开发者学习。 ... [详细]
  • 使用 jQuery 实现页面加载进度条
    页面加载进度条是提升用户体验的重要工具,通过在页面头部显示一个加载状态,并在页面完全加载后隐藏,可以有效减少用户的等待焦虑。本文将详细介绍如何使用 jQuery 实现这一功能。 ... [详细]
  • Vulnhub DC3 实战记录与分析
    本文记录了在 Vulnhub DC3 靶机上的渗透测试过程,包括漏洞利用、内核提权等关键步骤,并总结了实战经验和教训。 ... [详细]
  • 本文介绍了FTP(文件传输协议)的基础知识,包括其定义、如何通过TCP建立控制和数据连接,以及主动模式与被动模式的区别。FTP作为一种重要的文件传输协议,在互联网数据交换中扮演着关键角色。 ... [详细]
  • 深入理解SAP Fiori及其核心概念
    本文详细介绍了SAP Fiori的基本概念、发展历程、核心特性、应用类型、运行环境以及开发工具等,旨在帮助读者全面了解SAP Fiori的技术框架和应用场景。 ... [详细]
  • 本文将指导你通过 Gulp 和 Webpack 构建一个简单的用户登录界面,包括目录结构设置和关键文件的配置。 ... [详细]
  • 华为交换机VLAN间通信配置指南
    本文详细介绍了如何在华为交换机上配置VLAN间的通信,包括VLAN的创建、VLAN接口的配置以及Trunk和Access端口的设置。通过具体步骤指导读者完成网络配置,确保不同VLAN之间的设备能够互相访问。 ... [详细]
  • 本文总结了在使用React Native开发过程中遇到的一些常见问题及其解决方法,包括配置错误、依赖问题和特定组件的使用技巧。 ... [详细]
  • 本文详细介绍了如何在不同操作系统中设置 Node.js 的环境变量,包括通过命令行、npm 脚本以及直接在代码中设置的方法。 ... [详细]
  • 这个报错出现在userDao里面,sessionfactory没有注入。解决办法:spring整合Hibernate使用test测试时要把spring.xml和spring-hib ... [详细]
  • 端到端自动化测试框架设计 - 以京东商品搜索为例的Web应用测试
    本文将对前文介绍的京东商品搜索功能的端到端自动化测试进行总结,涵盖使用WebStorm、Node.js、Mocha、WebDriverIO及Selenium构建的测试环境,并特别讨论了如何通过会话保持用户登录状态。 ... [详细]
  • 利用Selenium框架解决SSO单点登录接口无法返回Token的问题
    针对接口自动化测试中遇到的SSO单点登录系统不支持通过API接口返回Token的问题,本文提供了一种解决方案,即通过UI自动化工具Selenium模拟用户登录过程,从浏览器的localStorage或sessionStorage中提取Token。 ... [详细]
  • 本文介绍了基于Java的在线办公工作流系统的毕业设计方案,涵盖了MyBatis框架的应用、源代码分析、调试与部署流程、数据库设计以及相关论文撰写指导。 ... [详细]
author-avatar
诸葛二蛋
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有