Nodejs学习心得:写了一个简单的博客网站
Nodejs学习心得:写了一个简单的博客网站
数据库使用mongodb,模版引擎jade,样式框架bootstrap github: https://github.com/xulianghhu/nodejs-blog 下载地址: http://download.csdn.net/detail/xulianghh/8108419
Node.js 学习心得:写了一个简单的博客网站
在最近的学习过程中,我通过实践完成了一个基于 Node.js 的简单博客网站。这个项目不仅让我对 Node.js 有了更深入的理解,还帮助我掌握了如何将不同的技术栈整合到一起。
技术栈
- 数据库:MongoDB
- 模板引擎:Jade(现更名为Pug)
- 样式框架:Bootstrap
- 服务器端框架:Express.js
GitHub 仓库
该项目的源代码托管在 GitHub 上,你可以通过以下链接访问:
项目结构
项目的基本结构如下:
nodejs-blog/
├── app.js
├── package.json
├── public/
│ ├── css/
│ ├── js/
│ └── images/
├── routes/
│ ├── index.js
│ ├── posts.js
├── views/
│ ├── layout.jade
│ ├── index.jade
│ └── post.jade
└── models/
└── post.js
主要代码片段
app.js
const express = require('express');
const mongoose = require('mongoose');
const bodyParser = require('body-parser');
const app = express();
// 连接 MongoDB 数据库
mongoose.connect('mongodb://localhost/blog', { useNewUrlParser: true, useUnifiedTopology: true });
// 设置模板引擎为 Jade (Pug)
app.set('view engine', 'jade');
// 静态文件目录
app.use(express.static('public'));
// 使用 body-parser 中间件来解析请求体
app.use(bodyParser.urlencoded({ extended: false }));
// 引入路由
require('./routes')(app);
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`Server is running on port ${PORT}`);
});
routes/index.js
const express = require('express');
const router = express.Router();
const Post = require('../models/post');
router.get('/', async (req, res) => {
const posts = await Post.find().sort('-createdAt');
res.render('index', { posts });
});
module.exports = router;
views/layout.jade
doctype html
html
head
title= title
link(rel='stylesheet', href='/css/bootstrap.min.css')
body
block content
script(src='/js/jquery.min.js')
script(src='/js/bootstrap.min.js')
models/post.js
const mongoose = require('mongoose');
const PostSchema = new mongoose.Schema({
title: String,
content: String,
createdAt: { type: Date, default: Date.now }
});
module.exports = mongoose.model('Post', PostSchema);
通过这个项目,我学到了如何使用 Express 框架搭建 Web 应用,如何连接和操作 MongoDB 数据库,以及如何使用 Jade (Pug) 模板引擎渲染页面。此外,我还学会了如何使用 Bootstrap 快速搭建美观的前端界面。
希望这些内容对你有所帮助!如果你有任何问题或建议,欢迎在 GitHub 上留言交流。
代码还可以更精简
还不错。。。
蜗牛的哈。支持!
Node.js 学习心得:写了一个简单的博客网站
在学习 Node.js 的过程中,我决定通过实际项目来巩固知识。于是,我构建了一个简单的博客网站。在这个项目中,我使用了以下技术栈:
- 数据库:MongoDB
- 模板引擎:Jade (现在称为 Pug)
- 样式框架:Bootstrap
项目结构
项目的基本目录结构如下:
nodejs-blog/
├── models/
│ └── post.js
├── views/
│ ├── index.jade
│ ├── post.jade
│ └── layout.jade
├── routes/
│ ├── index.js
│ └── posts.js
├── app.js
└── package.json
数据库操作
为了与 MongoDB 进行交互,我使用了 mongoose
库。首先安装 mongoose
:
npm install mongoose --save
在 models/post.js
中定义模型:
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);
路由处理
在 routes/posts.js
中处理文章的增删改查:
const express = require('express');
const router = express.Router();
const Post = require('../models/post');
router.get('/', async (req, res) => {
const posts = await Post.find().sort({ createdAt: -1 });
res.render('index', { posts });
});
router.post('/', async (req, res) => {
const { title, content } = req.body;
const post = new Post({ title, content });
await post.save();
res.redirect('/');
});
// 其他路由如删除、更新等...
module.exports = router;
视图渲染
使用 Jade(Pug) 模板引擎渲染视图。例如,在 views/index.jade
中编写如下代码:
doctype
html
head
link(rel='stylesheet', href='/stylesheets/style.css')
body
h1 我的博客
ul
each post in posts
li
a(href='/post/' + post._id)= post.title
启动应用
在 app.js
中配置 Express 应用并启动服务器:
const express = require('express');
const mongoose = require('mongoose');
const bodyParser = require('body-parser');
const app = express();
mongoose.connect('mongodb://localhost/blog', { useNewUrlParser: true, useUnifiedTopology: true });
app.set('view engine', 'jade');
app.use(bodyParser.urlencoded({ extended: false }));
app.use(express.static('public'));
app.use(require('./routes/index'));
app.use(require('./routes/posts'));
const port = process.env.PORT || 3000;
app.listen(port, () => {
console.log(`Server running on port ${port}`);
});
项目源码
源码托管在 GitHub 上,有兴趣的朋友可以查看和学习。
希望这篇心得能帮助大家更好地理解和学习 Node.js!