Node.js做的个人博客(仿node-club;基于express3,markdown,mongoose)
Node.js做的个人博客(仿node-club;基于express3,markdown,mongoose)
/app/controllers/site.js
Node.js做的个人博客(仿node-club;基于express3,markdown,mongoose)
在这篇文章中,我们将探讨如何使用Node.js、Express3、Markdown和Mongoose来构建一个简单的个人博客。我们将重点关注控制器部分的实现,这是处理业务逻辑的关键部分。
文件结构
首先,我们假设项目的基本文件结构如下:
/blog
├── app
│ ├── controllers
│ │ └── site.js
│ ├── models
│ │ └── post.js
│ ├── routes
│ │ └── index.js
├── public
│ ├── css
│ │ └── style.css
│ ├── js
│ │ └── script.js
└── views
├── layouts
│ └── default.jade
├── partials
│ └── header.jade
└── index.jade
控制器实现
现在让我们看看site.js
文件中的内容。这个文件将包含处理站点路由的逻辑。
// /app/controllers/site.js
var express = require('express');
var router = express.Router();
var Post = require('../models/post');
// 获取所有文章
router.get('/', function(req, res) {
Post.find({}, function(err, posts) {
if (err) return res.status(500).send("There was a problem finding the posts.");
res.render('index', { posts: posts });
});
});
// 创建新文章
router.post('/posts', function(req, res) {
var newPost = new Post({
title: req.body.title,
content: req.body.content
});
newPost.save(function(err) {
if (err) return res.status(500).send("There was a problem saving the post.");
res.redirect('/');
});
});
module.exports = router;
模型定义
接下来是post.js
模型文件,它定义了文章的数据结构。
// /app/models/post.js
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var PostSchema = new Schema({
title: String,
content: String,
createdAt: { type: Date, default: Date.now }
});
module.exports = mongoose.model('Post', PostSchema);
路由配置
最后,我们需要配置路由,将请求分发到相应的控制器。
// /app/routes/index.js
var express = require('express');
var router = express.Router();
var siteController = require('../controllers/site');
router.use('/', siteController);
module.exports = router;
总结
以上就是使用Node.js、Express3、Markdown和Mongoose构建个人博客的基本步骤。通过这些代码片段,我们可以看到如何组织文件结构、编写控制器逻辑、定义数据模型以及配置路由。这种方式可以有效地分离关注点,并使代码更加模块化和易于维护。
好多blog啊= =
入门惯例~~
?
不错,收藏
网址打不开了。。
嗯 不太稳定–
晕 没有注册模块??
部署了下,简洁美观,自己才刚学,不知道什么时候才到达楼主的境界,厉害
请问怎么部署的?我下载了一个不会部署,就是怎么在自己电脑上跑起来
好的,我们可以基于Express 3、Markdown 和 Mongoose 来构建一个简单的个人博客。以下是实现这个功能的基本步骤和示例代码。
1. 环境配置
首先确保已经安装了以下依赖项:
- Express 3.x
- Mongoose
- Markdown(使用
marked
库)
你可以通过 npm 安装这些库:
npm install express@3.x mongoose marked --save
2. 基本框架设置
创建基本的 Express 3 应用结构:
// app.js
var express = require('express');
var mongoose = require('mongoose');
var marked = require('marked');
var app = express();
var port = process.env.PORT || 3000;
// 连接 MongoDB
mongoose.connect('mongodb://localhost/blog', { useNewUrlParser: true, useUnifiedTopology: true });
// 配置中间件
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.static(__dirname + '/public'));
// 路由
require('./app/routes')(app);
// 启动服务器
app.listen(port);
console.log('Server running on http://localhost:' + port);
3. 创建博客模型
定义一个简单的博客模型:
// models/post.js
var mongoose = require('mongoose');
var postSchema = new mongoose.Schema({
title: String,
content: String,
markdownContent: String,
createdAt: { type: Date, default: Date.now }
});
module.exports = mongoose.model('Post', postSchema);
4. 控制器文件
接下来是 site.js
控制器文件:
// app/controllers/site.js
var Post = require('../models/post');
exports.index = function(req, res) {
Post.find({}, function(err, posts) {
if (err) return res.status(500).send(err);
res.render('index', { posts: posts.map(post => ({
title: post.title,
content: marked(post.markdownContent)
})) });
});
};
exports.create = function(req, res) {
var post = new Post({
title: req.body.title,
markdownContent: req.body.content
});
post.save(function(err) {
if (err) return res.status(500).send(err);
res.redirect('/');
});
};
5. 配置路由
最后,在 routes.js
文件中配置路由:
// app/routes.js
module.exports = function(app) {
var siteController = require('./controllers/site');
app.get('/', siteController.index);
app.post('/posts', siteController.create);
};
总结
上述代码提供了一个简单的个人博客应用的基础架构。用户可以发布带有 Markdown 的博客文章,并在首页查看这些文章的渲染结果。这个应用使用了 Express 3、Mongoose 和 Marked 来处理请求、存储数据和转换 Markdown 文本。希望这对你有所帮助!