Nodejs 基于 express 的 blog,路由基于独立开发的mvc模块。完全支持express 路由语法
Nodejs 基于 express 的 blog,路由基于独立开发的mvc模块。完全支持express 路由语法
后端是基于express ,自己编写的 mvc 核心模块、 前端基于angularjs。编写的还不是很熟练。 代码内部继承了twitter 的小功能。登陆后在用户设置->twitter set 点击授权,授权后就可以访问twitter. angularjs 基于前端mvc 路由机制。概念很早就有了。只是最近google 将它发扬光大。 目前还不能提供多用户注册。主要空间问题不能解决。补在appfog上面。速度还好,就是管理困难。 刚刚添加了,刷新twitter 功能。
实现了登录国外twitter 的功能。可以发送,刷新消息。查看 其他用户发的消息,“@自己” 的消息。可以通过在输入框里面输入命令follow 人。但是功能太多,还不能全部实现。现在前后端仍然需要重构.
改写angular 路由表。更改数据库逻辑。用ObjectId作为唯一ID。
添加的markdown-js 功能,只是编辑器又改成了textarea。 今天碰到了些问题。 我的逻辑是把内容传到服务器的数据库里面。然后前端显示的时候读取数据库,然后发到前端,前端解析markdown.但是老是解析不正常。看了下源码觉得是markdown-js对\r\n 处理的不对。 于是就把\r 过滤了。这样才能正常显示。坑爹啊。 我后来重写的几篇blog就是用markdown 语法写的。因为对语法还不熟悉,所以暂时很简单。还没有完整的测试。
添加的对评论的回复功能。rss 刷新更人性化。图片上传可以上传链接。
内部代码集成一个mvc_route 模块还没有发布,提供 express 的mvc的功能. 是一个单用户blog ,原本的目的也是让个人可以吧Blog 系统轻易放到免费空间中。 暂时完成这些。 http://fenglinhuo2.ap01.aws.af.cm/blog 用户名:test 密码:123456
Node.js 基于 Express 的 Blog,路由基于独立开发的 MVC 模块
概述
本项目是一个基于 Node.js 和 Express 构建的博客系统,其路由模块是独立开发的 MVC(Model-View-Controller)模块。该系统完全支持 Express 路由语法,并且前端使用 AngularJS 实现。
后端技术栈
- 后端框架:Express
- MVC核心模块:自定义开发的 MVC 模块,用于处理业务逻辑和数据操作
- 数据库:MongoDB(使用 ObjectId 作为唯一标识符)
前端技术栈
- 前端框架:AngularJS
- Markdown 解析:markdown-js
- Twitter 授权:通过 Twitter API 授权用户登录
功能特性
-
登录与授权
- 用户可以通过 Twitter 账号登录系统。
- 登录后可以在用户设置中点击 “Twitter Set” 进行授权。
- 授权成功后可以访问 Twitter 相关功能。
-
博客功能
- 支持 Markdown 语法编写博客。
- 可以发送、刷新 Twitter 消息。
- 查看其他用户发布的消息,以及包含 “@自己” 的消息。
- 支持通过命令行方式关注用户。
-
评论功能
- 支持评论回复功能。
- RSS 刷新更人性化。
- 图片上传支持链接形式。
-
技术细节
- 使用
ObjectId
作为唯一标识符。 markdown-js
功能用于解析 Markdown 文本,但遇到了一些解析问题,已经进行了相应的调整。
- 使用
示例代码
自定义 MVC 模块 (mvc_route.js)
const express = require('express');
const router = express.Router();
// 定义控制器
const HomeController = require('./controllers/HomeController');
const BlogController = require('./controllers/BlogController');
// 定义路由
router.get('/', HomeController.index);
router.get('/blog', BlogController.list);
module.exports = router;
控制器示例 (HomeController.js)
class HomeController {
static index(req, res) {
res.render('index', { title: '首页' });
}
}
module.exports = HomeController;
路由配置 (app.js)
const express = require('express');
const app = express();
const mvcRoute = require('./routes/mvc_route');
app.use(express.static('public'));
app.use('/api', mvcRoute); // 使用自定义的 MVC 路由模块
app.listen(3000, () => {
console.log('App is running on port 3000');
});
总结
该项目旨在提供一个简单易用的个人博客系统,能够方便地部署到免费空间中。尽管当前版本还有一些未完善的功能,但整体架构已经较为完整,并且支持 Express 的路由语法。未来计划进行前后端重构,进一步优化用户体验。
访问地址
- 博客系统
- 用户名:
test
- 密码:
123456
代码仓库
希望以上内容能帮助你更好地理解和使用该 Node.js 博客系统。
之前用户名忘了设置正确,现在可以登录了。
赞一个 大概看了下源码,轻喷下。。。哈哈,twitter部分还没看。
- markdown放在服务器解析会不会优化点。
- mvc-router模块建的全局变量是不是有点多,搞个统一的namespace么。 router这个确实有点配置的蛋都碎了,还是需要有个插件来控制
基于Express构建一个博客系统,并且使用独立开发的MVC模块来支持Express路由语法,是一种常见的开发方式。以下是一个简化版的示例,展示如何实现这样的架构。
示例代码
1. 安装依赖
首先,确保安装必要的依赖包:
npm install express mongoose body-parser ejs
2. MVC 模块结构
创建一个简单的MVC模块,用于处理不同的路由请求:
- controllers
index.js
posts.js
- models
post.js
- routes
index.js
posts.js
3. 示例代码
/controllers/index.js
const Post = require('../models/post');
module.exports.index = (req, res) => {
Post.find({}, (err, posts) => {
if(err) return console.error(err);
res.render('index', { posts });
});
};
/controllers/posts.js
const Post = require('../models/post');
module.exports.create = (req, res) => {
const newPost = new Post({
title: req.body.title,
content: req.body.content
});
newPost.save((err) => {
if(err) return console.error(err);
res.redirect('/');
});
};
/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/index.js
const express = require('express');
const router = express.Router();
const { index } = require('../controllers/index');
router.get('/', index);
module.exports = router;
/routes/posts.js
const express = require('express');
const router = express.Router();
const { create } = require('../controllers/posts');
router.post('/create', create);
module.exports = router;
/app.js
const express = require('express');
const mongoose = require('mongoose');
const bodyParser = require('body-parser');
const routes = require('./routes');
mongoose.connect('mongodb://localhost/myblog', { useNewUrlParser: true, useUnifiedTopology: true });
const app = express();
app.set('view engine', 'ejs');
app.use(bodyParser.urlencoded({ extended: true }));
app.use(express.static('public'));
app.use('/', routes.index);
app.use('/posts', routes.posts);
app.listen(3000, () => console.log('Server running on port 3000'));
解释
- 模型层 (
models/post.js
):定义了博客文章的数据结构,包含标题、内容等字段。 - 控制器层 (
controllers/index.js
,controllers/posts.js
):处理业务逻辑,如获取文章列表或创建新文章。 - 路由层 (
routes/index.js
,routes/posts.js
):将URL请求映射到相应的控制器方法上。 - 应用入口 (
app.js
):初始化Express应用,配置视图引擎、静态文件路径等,并加载路由。
这种方式清晰地分离了关注点,使得代码更加模块化和易于维护。希望这能帮助你理解如何基于Express和自定义的MVC模块构建一个博客系统。