(一) 使用 Hugo 搭建个人博客保姆级教程(上篇)

news2024/11/20 16:25:31

Hugo博客封面

手把手教你如何从0开始构建一个静态网站,这不需要有太多的编程和开发经验和时间投入,也基本不需要多少成本(除了个性化域名),使用GitHub和Hugo模板即可快速构建和上线一个网站。

目标读者

本文档适用于以下用户:

  • 对网站构建不太了解,没有Web开发经验的用户
  • 希望快速构建一个网站,个性化需求不多,不想花费太多精力打理,更新不多的用户
  • 希望学习网站构建、网站模板、Web开发的用户
  • 对Go语言感兴趣,希望从事开源项目的用户

原理

静态网站构建原理

世界上的网站上千万,网页数量更是如天上的星星数也数不清。那么这些网站都是如何构建的?都包括哪些类型呢?笼统的概括世界上的网站分为两种类型:

  • 静态网站:仅提供展示功能,不能与用户交互,不需要后端数据库存储用户信息
  • 交互式网站:需要与用户交互,保存用户信息

大多数现代Web应用程序使用层叠样式表(CSS)、JavaScript、图片甚至是特殊的字体和字形库,如Awesome字体,这也是我们工具箱中最常用的库之一。

几乎所有的网站中都会包含一个静态文件目录 static,这个目录下包含三个目录,分别保存着三类文件:

  • js:Javascript
  • images:图片
  • css:层叠样式表和字体

我们不会为每个网站分别导入不同的样式信息,而是使用模板来生成网页的不同部分。

我们在下一章中将分别介绍三款流行的静态网站生成工具。

静态网站构建工具

静态网站构建工具简介

使用静态网站构建工具不但可以让我们构建静态网站的工作大大简化,而且还可以迅速验证自己的想法,以最高效的方式开发网站。

这一章中将分别介绍三款流行的开源静态网站构建工具,然后说明为什么我们选择使用 Hugo 来构建静态网站。

对比

下面是三款静态网站构建工具的简要对比:

  • Jekyll 简介

Jekyll 是最早开始流行的静态网站构建工具,使用Ruby语言开发,开源已有9个年头了,是Github Pages默认的静态网站构建工具。当前互联网上有大量基于jekyll构建的静态网站,包括现在流行的开源容器编排调度引擎kubernetes的官网。

  • Jekyll的理念

    Jekyll网站构建的理念就是只做用户告诉它要做的事情,不多也不少:

    • No Magic:简单易懂
    • It “Just Works”:初始化网站配置,不需要为让用户操心
    • Content is King:内容为王,这是用于应该真正关心的部分
    • Stability:向后兼容,容易维护
    • Small & Extensible:核心功能满足90%用户的需求,其它功能使用插件形式,易于集成
      以上理念也被后来出现的其它静态网站构建工具所传承。
  • Hexo简介

    Hexo 是一款使用node.js开发的静态网站构建工具,便于构建华丽绚烂的页面。

    截止今日, Hexo 已经有386个主题框架。

  • Hugo简介

    Hugo是由Go语言实现的静态网站生成器。简单、易用、高效、易扩展、快速部署。

    Hugo以速度快著称,号称是世界上最快的网站生成框架。

    The world’s fastest framework for building websites

以上工具都可以将markdown内容转换为静态页面。

为什么选择Hugo

来自1Password的评价

这里有一段来自1Password的对hugo的评价,很有代表性。

内容翻译自 https://gohugo.io/showcase/1password-support/

在1Password,我们过去每个月都会经历一个不同的文档平台:博客引擎,电子书,维基,用Ruby和JavaScript编写的网站生成器。 每个方式都有自己的不足。然后我们找到了hugo。我们做了最后一次切换,我们很高兴我们做到了。

并非所有静态站点生成器都是相同的

找到一个能让您的客户,作者,设计师和DevOps团队满意的工具并非易事,但我们通过Hugo进行了管理:

  • Hugo是静态的。我们是一家安全公司,所以我们坚持静态网站并尽可能地使用它们。我们觉得客户在HTML文件上比在需要强化的复杂服务器上更安全。

  • Hugo是基于Go的。在1Password我们喜欢Go编程语言,我们很高兴得知Hugo使用了我们的设计师和前端开发人员已经掌握的相同的Go模板语法。

  • Hugo很快。我们以前的静态站点生成器花费将近一分钟来编译我们的(那时还小得多)站点。开发人员可能已经习惯了这一点,但对于希望看到工作实时预览的作家来说,这并不合适。Hugo在几毫秒内完成了同样的工作,到现在,转瞬之间就可以编译五种语言编写的400多个页面。

  • Hugo很灵活。感谢Hugo的内容和布局系统,我们能够保留现有的文件和文件夹结构,并在几天内移植整个生产站点。然后我们可以创建以前不可能的新内容类型,比如这些时髦的陈列柜。

  • Hugo非常适合作家。我们的文档团队已经对Markdown和Git感到满意,并且可以开始为Hugo创建内容而无需停顿。一旦我们添加了短代码,我们的作者就可以通过少量的新语法来使用类似平台盒(platform boxes)的功能来装饰文章。

  • Hugo有一个惊人的开发者社区。Hugo更新频繁,充满了功能和修复。在我们开发网站的多语言版本时,我们提交了所需功能的PR,并通过@bep和其他人的流程得到了帮助。

  • Hugo易于部署。 Hugo拥有适量的配置选项,可以适应我们的构建系统而不会太复杂。

好了,话不多说,正式开始Hugo搭建教程👇

Hugo博客搭建教程

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

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

相关文章

学信息系统项目管理师第4版系列16_资源管理过程

1. 组建项目团队,建设项目团队和管理项目团队属于执行过程组 1.1. 【高22上选21】 1.1.1. 【高21上选25】 1.2. 3版 2. 【高19上案三】 2.1. 【高18上案三】 2.2. 【高23上案一】 3. 规划资源管理 3.1. 定义如何估算、获取、管理和利用团队以及实物资源的过…

二叉树的顺序存储——堆——初识堆排序

前面我们学过可以把完全二叉树存入到顺序表中,然后利用完全二叉树的情缘关系,就可以通过数组下标来联系。 但是并不是把二叉树存入到数组中就是堆了,要看原原来的二叉树是否满足:所有的父都小于等于子,或者所有的父都…

十二、【漏洞复现】Rails任意文件读取(CVE-2019-5418)

十二、【漏洞复现】Rails任意文件读取(CVE-2019-5418) 12.1、漏洞原理 Ruby on Rails是一个使用 Ruby 语言写的开源 Web 应用框架,它是严格按照 MVC 结构开发的。它努力使自身保持简单,来使实际的应用开发时的代码更少,使用最少…

JavaScript系列从入门到精通系列第十三篇:JavaScript中基本数据类型和引用数据类型,创建对象的两种方式

一:基本数据类型与引用数据类型 基本数据类型:String Number Boolean Null Undefined 引用数据类型:Object 我们的内存分成了两大块,一是栈内存二是堆内存。变量都是保存到栈内存中,var a 123; a和123都在栈空间&…

互联网Java工程师面试题·ZooKeeper 篇·第一弹

目录 1. ZooKeeper 面试题? 2. ZooKeeper 提供了什么? 3. Zookeeper 文件系统 4. ZAB 协议? 5. 四种类型的数据节点 Znode 6. Zookeeper Watcher 机制 -- 数据变更通知 7. 客户端注册 Watcher 实现 8. 服务端处理 Watcher 实现 9. 客…

Redis最常见的5种应用场景

Redis作为当今最流行的内存数据库,已经成为服务端加速的必备工具之一。对于Redis为什么那么快?以及Redis采用单线程,但为什么反而获得更高的性能的疑问,在之前的Redis为什么那么快?一文中,已经有所介绍。 …

TCP端口崩溃,msg:socket(): Too many open files

一、现象 linux系统中运行了一个TCP服务器,该服务器监听的TCP端口为10000。但是长时间运行时发现该端口会崩溃,TCP客户端连接该端口会失败: 可以看到进行三次握手时,TCP客户端向该TCP服务器的10000端口发送了SYN报文,…

Qt 综合练习小项目--反金币(1/2)

目录 1 项目简介 2 项目基本配置 2.1 创建项目 2.2 添加资源 3 主场景 3.1 设置游戏主场景配置 3.2 设置背景图片 3.3 创建开始按钮 3.4 开始按钮跳跃特效实现 3.5 创建选择关卡场景 3.6 点击开始按钮进入选择关卡场景 1 项目简介 翻金币项目是一款经典的益智类游戏…

开发过程教学——交友小程序

交友小程序 1. 我的基本信息2. 我的人脉2.1 我的关注2.2 我的粉丝 3. 我的视频4. 我的相册 特别注意:由于小程序分包限制2M以内,所以要注意图片和视频的处理。 1. 我的基本信息 数据库表: 我的基本信息我的登录退出记录我的登录状态&#x…

roarctf_2019_easy_pwn

roarctf_2019_easy_pwn Arch: amd64-64-little RELRO: Full RELRO Stack: Canary found NX: NX enabled PIE: PIE enabled64位,保护全开 __int64 ADD() {__int64 result; // raxint i; // [rsp4h] [rbp-1Ch]int v2; // [rsp8h] [rbp-18h]int…

数学建模Matlab之基础操作

作者由于后续课程也要学习Matlab,并且之前也进行了一些数学建模的练习(虽然是论文手),所以花了几天零碎时间学习Matlab的基础操作,特此整理。 基本运算 a55 %加法,同理减法 b2^3 %立方 c5*2 %乘法 x 1; …

93、Redis 之 使用连接池管理Redis6.0以上的连接 及 消息的订阅与发布

★ 使用连接池管理Redis连接 从Redis 6.0开始,Redis可支持使用多线程来接收、处理客户端命令,因此应用程序可使用连接池来管理Redis连接。 上一章讲的是创建单个连接来操作redis数据库,这次使用连接池来操作redis数据库 Lettuce连接池 支持…

Flutter笔记:手写并发布一个人机滑动验证码插件

Flutter笔记 手写一个人机滑块验证码 作者:李俊才 (jcLee95):https://blog.csdn.net/qq_28550263 邮箱 :291148484163.com 本文地址:https://blog.csdn.net/qq_28550263/article/details/133529459 写 Flut…

【深蓝学院】手写VIO第4章--基于滑动窗口算法的 VIO 系统:可观性和 一致性--作业

0. 内容 T1. 参考SLAM14讲P247直接可写,注意 ξ 1 , ξ 2 \xi_1,\xi_2 ξ1​,ξ2​之间有约束(关系)。 套用舒尔补公式: marg掉 ξ 1 \xi_1 ξ1​之后,信息被传递到 L 1 和 L 2 L_1和L_2 L1​和L2​之间了。 T2. …

同学苹果ios的ipa文件应用企业代签选择签名商看看这篇文章你再去吧

同学我们要知道随着互联网的发展,苹果应用市场的火爆,越来越多的开发者加入到苹果应用开发行业中来。同时,苹果应用市场上的应用也在不断增多,用户数量也在不断增加,苹果应用代签是指通过第三方公司为开发者的应用进行…

谋道翻译逆向

文章目录 前文crypto模块分析完整代码结尾 前文 本文章中所有内容仅供学习交流,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! crypto模块 Crypto是加密的简称&#…

nodejs+vue校园跑腿系统elementui

购物车品结算,管理个人中心,订单管理,接单处理,商品维护,用户管理,系统管理等功育食5)要求系统运行可靠、性能稳定、界面友好、使用方便。 第三章 系统分析 10 3.1需求分析 10 3.2可行性分析 10 3.2.1技术…

Lagrange插值法实验:求拉格朗日插值多项式和对应x的近似值matlab实现(内附代码)

一、实验要求 已知函数表: 求出Lagrange 插值多项式,并计算x1.2处的y的近似值。 二、MATLAB代码 求解多项式: X input(请输入横坐标向量X:\nX); % 获取用户输入的横坐标向量 Y input(请输入纵坐标向量Y:\nY); % 获取用户输入的纵坐标…

MySQL-MVCC(Multi-Version Concurrency Control)

MySQL-MVCC(Multi-Version Concurrency Control) MVCC(多版本并发控制):为了解决数据库并发读写和数据一致性的问题,是一种思想,可以有多种实现方式。 核心思想:写入时创建行的新版…

基于 Netty + RXTX 的无协议 COM 通讯案例实现

参考 Netty集成串口RXTX编程,为什么过时了? Java版本 java version "1.8.0_231" Java(TM) SE Runtime Environment (build 1.8.0_231-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.231-b11, mixed mode) RXTX版本 # 官网 http://rx…