Ruby 语言 编写静态网站生成器 Ruby+ERB+Markdown

Ruby阿木 发布于 19 小时前 3 次阅读


Ruby 静态网站生成器:使用 ERB 和 Markdown 构建你的个人博客

在当今数字化时代,拥有一个个人网站或博客已经成为许多人的需求。对于开发者来说,构建一个静态网站是一个很好的实践项目,它可以帮助我们学习前端和后端技术,同时也能展示我们的技术能力。本文将介绍如何使用 Ruby、ERB(嵌入式 Ruby)和 Markdown 来构建一个简单的静态网站生成器。

静态网站生成器是一种工具,它可以从模板和内容源(如 Markdown 文件)生成静态网页。这种生成器通常用于构建个人博客、小型项目网站或文档站点。Ruby 是一种流行的编程语言,它拥有丰富的库和框架,非常适合用于构建静态网站生成器。

技术栈

- Ruby:作为主要的编程语言,用于编写网站生成器的逻辑和模板渲染。
- ERB:嵌入式 Ruby,允许在 HTML 模板中嵌入 Ruby 代码,用于动态生成页面内容。
- Markdown:一种轻量级标记语言,用于编写和格式化文本内容。

环境搭建

确保你的计算机上已经安装了 Ruby。你可以通过访问 [Ruby 官网](https://www.ruby-lang.org/) 下载并安装 Ruby。

接下来,安装 Bundler,这是一个 Ruby 项目的依赖管理工具。

ruby
gem install bundler

然后,创建一个新的 Ruby 项目目录,并初始化一个 Gemfile 文件。

ruby
mkdir my_static_site_generator
cd my_static_site_generator
touch Gemfile

在 Gemfile 中添加以下依赖:

ruby
source 'https://rubygems.org'

gem 'erb'
gem 'redcarpet'

运行以下命令安装依赖:

ruby
bundle install

设计网站结构

设计一个合理的网站结构对于维护和扩展都很重要。以下是一个简单的网站结构示例:


my_static_site_generator/
├── app/
│ ├── layouts/
│ │ └── layout.erb
│ ├── posts/
│ │ └── post1.md
│ └── index.erb
├── public/
└── Gemfile

- `app/`:存放网站模板和生成的静态文件。
- `app/layouts/`:存放 ERB 布局文件。
- `app/posts/`:存放 Markdown 文件。
- `public/`:存放最终生成的静态网页。

编写模板

在 `app/layouts/layout.erb` 中编写网站的布局模板:

erb

在 `app/index.erb` 中编写首页模板:

erb
Welcome to My Blog

编写生成器逻辑

在 `app/generator.rb` 中编写生成器逻辑:

ruby
require 'erb'
require 'redcarpet'

class StaticSiteGenerator
def initialize(posts_dir, output_dir)
@posts_dir = posts_dir
@output_dir = output_dir
@markdown = Redcarpet::Markdown.new(Redcarpet::Render::HTML.new)
end

def generate
Dir.glob(@posts_dir + '/.md').each do |file|
title = File.basename(file, '.md')
content = File.read(file)
html_content = @markdown.render(content)

erb_content = ERB.new(File.read('app/layouts/layout.erb')).result(binding)
File.write(@output_dir + "/{title}.html", erb_content)
end
end
end

generator = StaticSiteGenerator.new('app/posts', 'public')
generator.generate

运行生成器

在命令行中运行以下命令来生成静态网站:

shell
ruby app/generator.rb

这将生成一个包含所有 Markdown 文件转换成 HTML 的静态网站,存放在 `public/` 目录下。

总结

通过使用 Ruby、ERB 和 Markdown,我们可以轻松地构建一个静态网站生成器。这个生成器可以帮助我们快速生成个人博客或项目网站。随着项目的扩展,我们可以添加更多的功能,如分类、标签、评论系统等。

本文提供了一个简单的静态网站生成器示例,你可以根据自己的需求进行扩展和优化。希望这篇文章能帮助你入门 Ruby 静态网站生成器开发。