Node.js+MongoDB搭建的博客系统,欢迎大家来小站指点一下!谢谢大家(已含Node.js关键词,无需修改)
Node.js+MongoDB搭建的博客系统,欢迎大家来小站指点一下!谢谢大家(已含Node.js关键词,无需修改)
工作之余参考网上的资料,自学node.js,搭建了个小的博客网站,欢迎大家多提建设性意见啊,大恩不言谢。
最好是能注册个账号发表博客啥的,给捧捧场啊,随便注册,邮箱瞎填都行,限制比较小。
博客地址:Yblog
当然可以!以下是针对你提供的帖子内容进行扩展和补充:
Node.js + MongoDB 搭建的博客系统,欢迎大家来小站指点一下!谢谢大家
工作之余参考网上的资料,自学 Node.js,搭建了个小的博客网站,欢迎大家多提建设性意见啊,大恩不言谢。
博客功能介绍
- 用户注册:支持邮箱注册,但对邮箱格式不做严格校验。
- 博客发布:用户可以创建并发布自己的博客文章。
- 博客浏览:所有用户都可以浏览发布的博客文章。
技术栈
- 前端:HTML, CSS, JavaScript (使用 EJS 模板引擎)
- 后端:Node.js (Express 框架)
- 数据库:MongoDB (使用 Mongoose 进行数据模型定义)
示例代码
安装依赖
首先确保安装了 Node.js 和 MongoDB。然后创建项目文件夹,并初始化 npm:
mkdir myblog
cd myblog
npm init -y
安装所需的 npm 包:
npm install express mongoose ejs body-parser
创建服务器
创建一个 server.js
文件:
const express = require('express');
const mongoose = require('mongoose');
const bodyParser = require('body-parser');
const app = express();
app.use(bodyParser.urlencoded({ extended: true }));
app.set('view engine', 'ejs');
// 连接 MongoDB
mongoose.connect('mongodb://localhost/myblog', { useNewUrlParser: true, useUnifiedTopology: true });
// 用户模型定义
const UserSchema = new mongoose.Schema({
username: String,
email: String,
password: String
});
const BlogSchema = new mongoose.Schema({
title: String,
content: String,
author: String
});
const User = mongoose.model('User', UserSchema);
const Blog = mongoose.model('Blog', BlogSchema);
app.get('/', async (req, res) => {
const blogs = await Blog.find().sort('-createdAt');
res.render('index', { blogs });
});
app.post('/register', async (req, res) => {
const { username, email, password } = req.body;
const user = new User({ username, email, password });
await user.save();
res.redirect('/');
});
app.listen(3000, () => console.log('Server is running on port 3000'));
创建模板
在 views
文件夹下创建 index.ejs
文件:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>My Blog</title>
</head>
<body>
<h1>Welcome to My Blog</h1>
<% blogs.forEach(blog => { %>
<div>
<h2><%= blog.title %></h2>
<p><%= blog.content %></p>
<small>By <%= blog.author %></small>
</div>
<% }) %>
<form action="/register" method="POST">
<input type="text" name="username" placeholder="Username" required>
<input type="email" name="email" placeholder="Email" required>
<input type="password" name="password" placeholder="Password" required>
<button type="submit">Register</button>
</form>
</body>
</html>
博客地址
希望这些信息对你有帮助,期待你的反馈和建议!
最主要的参考了本站置顶的教学贴,改了一下界面,嘿嘿,大神们轻拍
精选 里面的图片轮换是怎么实现的?学习
用得一个开源的插件,Slicebox
好漂亮. 能不能看下源码? Github 上有 说起来没看懂"精选"这个页面下边的色块是做什么的?
git地址:https://github.com/yang6233562/y,写的磕碜别笑话啊 哈哈,那些色块就是占位的,还没想好该放些神马
额。。把地址后面的中文去掉。。
BAE怎么申请啊。。。
按照说明的格式填个单子,等两天就行了啊
Good job!
赞一个,学习了
东西不错 就是有几点不好的 1、js加载太多了; 2、没有gzip压缩
好赞~
话说好久没来 Cnodejs 版式也变漂亮了。
那个图片切换特效帅啊~
哈哈,你提的很对,主要是小站,我就没做优化,js的话主要是那个瀑布流用的kissy,文件巨多,准备换掉
哈哈,是开源的一个插件
谢谢支持
互相学习
Thx~
不错!
~~感谢支持
看了你的源码,我有个问题:
首页的文章对应作者为什么不直接调用user接口获取,为啥要在文章doc中加name字段呢?
如果要关联文章和用户可以使用用户id关联嘛。
而且你把用户的头像地址和评论,pv都写在了文章doc中,
如果我以后还需要一些其他数据呢,难道要重新去修改文章doc的结构??这样做太麻烦了吧!
非得用Bootstrap?
长得像点点
感谢大家的支持和访问!以下是我用 Node.js 和 MongoDB 搭建的博客系统的简单实现,希望对大家有所帮助。如果有任何问题或建议,欢迎随时指出。
项目结构
/blog-system
│
├── app.js # 主应用文件
├── config.js # 配置文件
├── models # 数据库模型
│ └── blog.js # 博客模型
│ └── user.js # 用户模型
├── routes # 路由文件
│ └── blogs.js # 博客路由
│ └── users.js # 用户路由
└── views # 视图文件
└── index.ejs # 首页视图
安装依赖
首先需要安装必要的依赖包:
npm install express mongoose ejs body-parser
示例代码
app.js
- 应用入口文件
const express = require('express');
const bodyParser = require('body-parser');
const mongoose = require('mongoose');
const app = express();
const PORT = process.env.PORT || 3000;
// 连接数据库
mongoose.connect('mongodb://localhost:27017/blog', { useNewUrlParser: true, useUnifiedTopology: true });
app.use(bodyParser.urlencoded({ extended: false }));
app.set('view engine', 'ejs');
// 引入路由
app.use('/blogs', require('./routes/blogs'));
app.use('/users', require('./routes/users'));
app.listen(PORT, () => {
console.log(`Server is running on http://localhost:${PORT}`);
});
models/user.js
- 用户模型
const mongoose = require('mongoose');
const UserSchema = new mongoose.Schema({
username: { type: String, required: true, unique: true },
password: { type: String, required: true }
});
module.exports = mongoose.model('User', UserSchema);
routes/users.js
- 用户路由
const express = require('express');
const router = express.Router();
const User = require('../models/user');
router.get('/register', (req, res) => {
res.render('register');
});
router.post('/register', async (req, res) => {
const { username, password } = req.body;
try {
await User.create({ username, password });
res.redirect('/login');
} catch (err) {
console.error(err);
res.status(500).send('Registration failed');
}
});
module.exports = router;
希望大家多多访问并提出宝贵的意见!
再次感谢大家的支持!如果遇到任何问题或有任何改进建议,请随时告诉我。