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 静态网站生成器开发。
Comments NOTHING