百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 文章教程 > 正文

Node.js入门:从零开始搭建个人博客

yund56 2025-03-17 19:40 10 浏览

随着互联网的快速发展,个人博客作为一种重要的网络信息载体,依然是许多开发者展示技术成果和分享经验的重要平台。使用Node.js和Express框架可以快速实现一个简洁高效的博客系统,同时也能帮助我们理解后端服务的基本原理。

本文将从零开始,手把手教你使用Node.js和Express搭建一个简单的个人博客系统。


一、项目初始化

在开始之前,我们需要确保已经安装了Node.js和npm。如果尚未安装,可以访问Node.js官网下载并安装最新版本的Node.js。

接下来,我们创建一个新的文件夹,并初始化一个Node.js项目:

mkdir my-blog && cd my-blog
npm init -y

这会生成一个package.json文件,用于管理项目的依赖和脚本。接下来,我们需要安装Express框架和其他必要的依赖:

npm install express ejs

o express: Node.js的高效轻量级Web框架。

o ejs: 一个简洁的模板引擎。


二、创建博客的基本结构

我们将在项目目录下创建以下文件和文件夹:

my-blog/
├── package.json
├── public/ # 静态资源目录(可选)
├── routes/ # 路由处理逻辑
├── views/ # 模板文件
└── app.js # 主应用文件


三、配置Express应用

在app.js中,我们需要完成以下步骤:

1. 引入Express模块:

const express = require('express');
const app = express();
const port = 3000;

2. 配置模板引擎:

app.set('view engine', 'ejs');
app.set('views', __dirname + '/views');

3. 设置静态资源目录(可选):

app.use(express.static(__dirname + '/public'));

4. 定义路由:

// 首页路由
app.get('/', (req, res) => {
res.render('index', {
title: '我的博客',
posts: [
{ id: 1, title: 'Hello World', content: '这是我的第一篇博客文章...' },
{ id: 2, title: '学习Node.js', content: 'Node.js是一门值得学习的语言...' }
]
});
});

// 文章详情页路由
app.get('/post/:id', (req, res) => {
const postId = req.params.id;
// 假设我们从数据库中获取文章数据,这里使用静态数据示例:
const posts = [
{ id: 1, title: 'Hello World', content: '这是我的第一篇博客文章...' },
{ id: 2, title: '学习Node.js', content: 'Node.js是一门值得学习的语言...' }
];

const post = posts.find(post => post.id === parseInt(postId));
if (!post) {
res.status(404).send('文章不存在');
} else {
res.render('post', {
title: post.title,
content: post.content
});
}
});

5. 启动服务器:

app.listen(port, () => {
console.log(`博客已启动,访问地址为 http://localhost:${port}`);
});


四、创建模板文件

在views/目录下创建以下EJS模板文件:

index.ejs(首页)

<!DOCTYPE html>


</span><span style='color: #FF0000; --tt-darkmode-color: #FF0C00;'><</span></strong>%= title %><strong><span style='color: #007020; --tt-darkmode-color: #4ED775;'>


<%= title %>




    <% posts.forEach(post => { %>

  • <a href="/post/<%= post.id %>"><%= post.title %>

    <%= post.content %>



  • <% }); %>


<a href="/post/1">查看更多文章



post.ejs(文章详情页)

<!DOCTYPE html>


</span><span style='color: #FF0000; --tt-darkmode-color: #FF0C00;'><</span></strong>%= title %><strong><span style='color: #007020; --tt-darkmode-color: #4ED775;'>


<%= title %>




<%= content %>



五、运行博客

启动服务器:

node app.js

打开浏览器,访问http://localhost:3000即可看到你的个人博客。


六、扩展功能

目前的博客系统非常基础,你可以根据需求添加更多功能:

1. 用户认证:使用 Passport 或其他身份验证库实现用户登录和注册。

2. 数据库集成:将文章数据存储到 MongoDB 或 MySQL 数据库中。

3. 评论功能:为每篇文章添加评论模块。

4. 富文本编辑:使用 CKEditor 等工具帮助用户更方便地撰写文章。

5. 静态资源优化:将 CSS 和 JavaScript 文件托管到 CDN,或使用Webpack进行打包。


七、部署博客

当你的博客功能完善后,可以将其部署到云服务器上(如阿里云、AWS、DigitalOcean等)。常见的部署方式包括:

1. 使用 pm2 管理进程:

npm install -g pm2
pm2 start app.js
pm2 save

2. 部署到容器化平台(如 Docker)。


总结

通过以上步骤,我们已经完成了一个简单的个人博客系统的搭建。虽然功能有限,但这个过程涵盖了Node.js和Express框架的基础知识,包括路由处理、模板引擎的使用以及基本的后端逻辑实现。

随着对技术的深入学习,你可以逐步为博客添加更多高级功能,使其更加完善和强大。无论是技术分享还是个人展示,这样一个基于 Node.js 的博客系统都能很好地满足你的需求!

相关推荐

如何在Office 中编辑 PDF?附详细化步骤

PDF很受欢迎,因为它能在不同的设备和操作系统上仍然保持原有格式。但是,这也意味着直接更改PDF文件比其他格式更难更复杂。值得庆幸的是,Microsoftoffice和UPDF帮你解决这一难题。一...

我的 Windows 装机必备软件清单

今天给大家分享下我的装机必备软件,都是用了好多年的软件神器。靠谱、好用、无广告,Windows电脑必备软件,收藏这一篇就够了!01.浏览器王者:Chromehttps://www.google.c...

Docnet Core 是一个轻量级、高性能的 .NET PDF 操作库

DocnetCore介绍DocnetCore是一个轻量级、高性能的.NETPDF操作库,依托于PDFium渲染引擎,提供强大的PDF文档解析、渲染、操作等功能。它完全支持.NET...

分享三款好用的PDF编辑软件,轻松处理PDF

作为一名需要经常和PDF文件打交道的工作者,我来分享一下几款好用的PDF编辑软件,并详细分析了它们的优缺点,希望能帮你找到合适的工具。1.AdobeAcrobatDC作为PDF格式的发明者,Ado...

PDF文档创建工具软件:novaPDF OEM 11.9 Build 432 for Windows

novaPDFOEM是一款实用高效的软件,从头开始设计,让您尽可能轻松地在应用程序中添加PDF打印功能。换句话说,这个实用程序是专门为应用程序开发人员设计的,可以直接在程序安装程序中集成为PDF打印...

线性表顺序存储结构求集合的并,交,补,差(源代码附上 超详细)

一:算法分析1)用数组A,B,C,E表示集合。假定A={1,3,4,5,6,7,9,10},  B={2,,3,4,7,8,10},E={1,2,3,4,5,6,7,8,9,10},  输入数组A...

分享一套SpringBoot开发博客系统源码,包含完整开发文档和视频

基本信息项目名称:eblog摘要:eblog是一个基于Springboot2.1.2开发的博客学习项目,为了让项目融合更多的知识点,达到学习目的,编写了详细的从0到1开发文档。主要学习包括:自定义Fr...

通达信指标合集〔源码齐全〕

很多朋友问到我哪款指标好用,这里我说一下,之所以有很多不同的指标是因为我们在针对不同的盘面情况的时候使用的指标是不同的,我给到的指标一般来讲就目前的环境来讲都是比较适合的,今天我就把我平时自己常用的指...

巅峰对决!Spring Boot VS .NET 6

SpringBoot和ASP.NETCore都是企业中流行的Web框架,对于喜欢C#的人会使用ASP.NETCore,而对于Java或Kotlin等基于JVM的语...

在asp.net core 中控制访问权限的方法

Intro#由于项目需要,需要在基于asp.netmvc的Web项目框架中做权限的控制,于是才有了这个权限控制组件,最初只是支持netframework,后来dotnetcore2.0...

ASP.NET是否无生存之地?

ASP.NET,这个已经很久的技术,总觉得已经被时代淘汰,我们公司是一个10人小公司,几个十年十五年的项目还是用ASP.NET开发的。这两年由于客户的需求变化,我们公司也顺势开始对这些项目重新开发,改...

Spring Boot + Vue.js 实现前后端分离(附源码)

作者:梁小生0101链接:juejin.im/post/5c622fb5e51d457f9f2c2381SpringBoot+Vue.js前后端涉及基本概念介绍,搭建记录,本文会列举出用到环...

ASP.NET Core 中的 Mapster 使用入门教程

在本文中,我们将学习如何在ASP.NETCore应用程序中使用Mapster。首先,我们将了解Mapster是什么以及如何将其安装到.NETCore应用程序中。然后,我们将在使用...

Asp.net常用方法及request和response-a

asp.net教程asp.net常用方法:1、Request.UrlReferrer请求的来源,可以根据这个判断从百度搜的哪个关键词、防下载盗链、防图片盗链,可以伪造(比如迅雷)。(使用全局一般处理...

ASP.NET Core使用功能开关控制路由访问

前言在前面的文章,我们介绍了使用Middleware有条件地允许访问路由(《ASP.NETCore使用Middleware有条件地允许访问路由》)。而对于一些试验性的功能,我们并不希望用密码去控制是...