使用node.js+express+mongodb来搭建一个简单的blog系统。.zip

preview
共1811个文件
js:656个
md:176个
gif:151个
需积分: 0 0 下载量 90 浏览量 更新于2023-08-03 收藏 4.85MB ZIP 举报
在本文中,我们将深入探讨如何使用Node.js、Express和MongoDB构建一个基本的博客系统。这是一个常见的技术栈,尤其适用于初学者和毕业设计项目。Node.js是一个基于Chrome V8引擎的JavaScript运行环境,使得JavaScript可以在服务器端运行。Express是Node.js的一个web应用框架,它简化了HTTP服务器的创建。而MongoDB则是一个流行的NoSQL数据库,非常适合存储结构化和半结构化的数据。 我们需要安装必要的开发工具和库。确保已经安装了Node.js和npm(Node包管理器)。接下来,通过命令行工具安装Express和MongoDB相关的模块: ```bash npm init -y npm install express mongoose body-parser ejs ``` `mongoose`是用于MongoDB的数据模型和ODM(对象文档映射),`body-parser`用于解析HTTP请求体中的JSON或URL编码的数据,`ejs`是模板引擎,用于渲染视图。 创建`app.js`作为主入口文件,初始化Express应用并设置路由。例如: ```javascript const express = require('express'); const bodyParser = require('body-parser'); const mongoose = require('mongoose'); const ejs = require('ejs'); const app = express(); // 使用EJS作为视图引擎 app.set('view engine', 'ejs'); // 解析请求体 app.use(bodyParser.urlencoded({ extended: true })); app.use(bodyParser.json()); // 连接MongoDB mongoose.connect('mongodb://localhost/blog', { useNewUrlParser: true, useUnifiedTopology: true }); // 引入模型和路由 require('./models/BlogPost'); require('./routes/blogRoutes')(app); // 设置静态资源目录 app.use(express.static('public')); // 启动服务器 const PORT = process.env.PORT || 3000; app.listen(PORT, () => console.log(`Server is running on port ${PORT}`)); ``` 在`./models/BlogPost.js`中定义一个Mongoose模型,描述博客文章的数据结构: ```javascript const mongoose = require('mongoose'); const BlogPostSchema = new mongoose.Schema({ title: String, content: String, author: String, date: { type: Date, default: Date.now } }); module.exports = mongoose.model('BlogPost', BlogPostSchema); ``` 接下来,在`./routes/blogRoutes.js`中设置博客的CRUD操作: ```javascript const express = require('express'); const router = express.Router(); const BlogPost = require('../models/BlogPost'); // 获取所有文章 router.get('/', async (req, res) => { const posts = await BlogPost.find(); res.render('index', { posts }); }); // 新增文章 router.post('/new', async (req, res) => { const post = new BlogPost(req.body); await post.save(); res.redirect('/'); }); // 显示单篇文章 router.get('/:id', async (req, res) => { const post = await BlogPost.findById(req.params.id); res.render('post', { post }); }); // 更新文章 router.put('/:id', async (req, res) => { const post = await BlogPost.findByIdAndUpdate(req.params.id, req.body, { new: true }); res.redirect('/'); }); // 删除文章 router.delete('/:id', async (req, res) => { await BlogPost.findByIdAndDelete(req.params.id); res.redirect('/'); }); module.exports = (app) => { app.use('/blog', router); }; ``` 创建视图文件,例如`views/index.ejs`和`views/post.ejs`,用以展示博客列表和文章详情。这些文件使用EJS语法,将服务器端的数据动态渲染到HTML中。 至此,我们已经完成了基础的博客系统的搭建。用户可以通过HTTP请求创建、查看、更新和删除博客文章。这个系统虽然简单,但涵盖了Web开发的基本概念:路由、数据库操作、模板引擎和表单处理。你可以根据实际需求对其进行扩展,比如添加用户认证、评论功能或者优化界面设计。这个项目对于学习Node.js、Express和MongoDB的开发者来说是一个很好的实践平台。