何从零构建一个简单的个人博客网站

如何从零构建一个简单的个人博客网站

在当今的数字时代,拥有一个个人博客网站不仅能展示你的技能,还能帮助你分享知识和与他人互动。本文将详细介绍如何使用现代技术构建一个简单的个人博客网站,适合初学者。

1. 技术栈选择

首先,你需要选择构建博客网站的技术栈。这里我们将使用:

  • HTML/CSS:用于构建网页的结构和样式。
  • JavaScript:为网站添加互动功能。
  • Node.js:作为后端服务器框架。
  • Express.js:简化 Node.js 中的路由和请求处理。
  • MongoDB:用作数据存储的 NoSQL 数据库。

2. 环境搭建

2.1 Node.js 和 npm 安装

首先,我们需要安装 Node.js 和 npm(Node 的包管理器)。

1
2
3
4
5
6
7
8
bash复制代码# Ubuntu 下安装
sudo apt update
sudo apt install nodejs
sudo apt install npm

# 检查安装是否成功
node -v
npm -v

2.2 项目初始化

在项目文件夹中初始化 Node.js 项目:

1
2
3
bash复制代码mkdir my-blog
cd my-blog
npm init -y

2.3 安装依赖

接下来,安装 Express.js 和其他必要的依赖包:

1
2
3
4
5
bash


复制代码
npm install express mongoose ejs body-parser
  • Express.js:用于处理 HTTP 请求。
  • Mongoose:用于与 MongoDB 交互。
  • EJS:一种模板引擎,可以在 HTML 中嵌入 JavaScript 代码。
  • Body-Parser:用于处理 POST 请求的数据。

3. 创建项目结构

以下是我们项目的基本结构:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
csharp复制代码my-blog/

├── views/ # 模板文件
│ └── index.ejs

├── public/ # 静态文件(css, js, images)
│ └── styles.css

├── models/ # 数据模型
│ └── Post.js

├── routes/ # 路由文件
│ └── index.js

├── app.js # 主应用文件
├── package.json # 项目配置文件
└── README.md # 项目文档

4. 编写代码

4.1 后端(Node.js + Express)

app.js 是项目的主文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
javascript复制代码const express = require('express');
const mongoose = require('mongoose');
const bodyParser = require('body-parser');
const app = express();
const Post = require('./models/Post');

// 连接 MongoDB 数据库
mongoose.connect('mongodb://localhost/my_blog', {
useNewUrlParser: true,
useUnifiedTopology: true,
});

// 设置模板引擎
app.set('view engine', 'ejs');
app.use(bodyParser.urlencoded({ extended: true }));

// 主页路由
app.get('/', async (req, res) => {
const posts = await Post.find();
res.render('index', { posts: posts });
});

// 发布文章
app.post('/new-post', async (req, res) => {
const newPost = new Post({
title: req.body.title,
content: req.body.content,
});
await newPost.save();
res.redirect('/');
});

app.listen(3000, () => {
console.log('Server is running on port 3000');
});

4.2 数据模型

models/Post.js 文件中定义博客文章的数据模型:

1
2
3
4
5
6
7
8
9
10
11
12
13
javascript复制代码const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const PostSchema = new Schema({
title: String,
content: String,
createdAt: {
type: Date,
default: Date.now
}
});

module.exports = mongoose.model('Post', PostSchema);

4.3 前端界面

views/index.ejs 中创建简单的前端界面:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
html复制代码<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>My Blog</title>
<link rel="stylesheet" href="/styles.css">
</head>
<body>
<h1>Welcome to My Blog</h1>

<form action="/new-post" method="POST">
<input type="text" name="title" placeholder="Title" required>
<textarea name="content" placeholder="Write your post here..." required></textarea>
<button type="submit">Submit</button>
</form>

<hr>

<% posts.forEach(post => { %>
<h2><%= post.title %></h2>
<p><%= post.content %></p>
<small>Posted on <%= post.createdAt.toDateString() %></small>
<hr>
<% }) %>
</body>
</html>

4.4 样式

public/styles.css 中为页面添加一些简单的样式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
css复制代码body {
font-family: Arial, sans-serif;
margin: 0 auto;
max-width: 800px;
}

h1 {
text-align: center;
}

form {
margin-bottom: 20px;
}

textarea {
width: 100%;
height: 150px;
margin: 10px 0;
}

5. 运行项目

使用以下命令启动服务器:

1
2
3
4
5
bash


复制代码
node app.js

现在可以在浏览器中访问 http://localhost:3000,你将看到一个简单的博客网站,其中可以创建新的博文并展示。

6. 图解项目结构和数据流

为了更好地理解网站的运行逻辑,我们可以绘制一些图解。

图 1:项目结构

图 2:数据流

7. 部署到云服务器

7.1 使用 Heroku 部署

可以将这个博客网站部署到 Heroku 或其他云平台。以下是简单的 Heroku 部署步骤:

1
2
3
bash复制代码heroku login
heroku create my-blog
git push heroku master

7.2 其他云平台

你也可以使用 AWS、Vercel 或其他平台来托管你的博客应用。


通过上述步骤,你已经成功构建了一个简单的个人博客网站。可以根据需求添加更多功能,比如用户注册、评论系统或文章分类功能。希望这篇文章对你有所帮助,祝你在构建个人博客的过程中玩得愉快!

[up主专用,视频内嵌代码贴在这]