Nodejs 个人写的 基于 express 的 blog .路由基于独立开发的mvc模块。完全支持express 路由语法
Nodejs 个人写的 基于 express 的 blog .路由基于独立开发的mvc模块。完全支持express 路由语法
后端是基于express ,自己编写的 mvc 核心模块、 前端基于angularjs。编写的还不是很熟练。所以基本谈不高效。 angularjs 基于前端mvc 路由机制。概念很早就有了。只是最近google 将它发扬光大。 目前还不能提供多用户注册。主要空间问题不能解决。补在appfog上面。速度还好,就是管理困难。 刚刚添加了,刷新twitter 功能。但是占时只能刷新内容,而且功能十分简单。看了下twitter api ,发现看的巨困难,实在是不太懂怎么调用https 的 api,所以只好用 npm 封装好的东东了。 很简单。要是有关于twitter api 的质料,也请提供一下。
实现了登录国外twitter 的功能。可以发送,刷新消息。查看 其他用户发的消息,“@自己” 的消息。可以通过在输入框里面输入命令follow 人。但是功能太多,还不能全部实现。现在前后端仍然需要重构。欠缺后台管理代码。
现在主要问题;
第一。目前缺乏后台管理模版。所以不能开放注册。是在太山寨了。 第二。缺乏文本编辑器。现有的功能不全。其实最好应该是静态的,不应该放在数据库吧, 不过appfog 好像不能支持动态生成的文件。还望大家指正。或有好的建议。 第三。有一些必要的优化还没有做。功能相对单一简单。 大家轻喷。 地址:http://fenglinhuo.ap01.aws.af.cm/blog
现在暂时还不能开源,因为后台还没有完善。谁能推荐一套后台模版?
今天更新的内容。
- 改写angular 路由表。更改数据库逻辑。用ObjectId作为唯一ID。
- 添加的markdown-js 功能,只是编辑器又改成了textarea。 今天碰到了些问题。 我的逻辑是把内容传到服务器的数据库里面。然后前端显示的时候读取数据库,然后发到前端,前端解析markdown.但是老是解析不正常。看了下源码觉得是markdown-js对\r\n 处理的不对。 于是就把\r 过滤了。这样才能正常显示。坑爹啊。 我后来重写的几篇blog就是用markdown 语法写的。因为对语法还不熟悉,所以暂时很简单。还没有完整的测试。
添加的对评论的回复功能。rss 刷新更人性化。图片上传可以上传链接。
Nodejs 个人写的基于 Express 的 Blog
简介
本文介绍了一个基于 Express 框架的个人博客系统,该系统使用自定义的 MVC 模块来处理路由,同时支持 Express 的路由语法。前端采用 AngularJS,而 Twitter API 的集成则通过 npm 包来简化。
技术栈
- 后端: Node.js + Express
- 前端: AngularJS
- 数据库: MongoDB
- API: Twitter API (通过 npm 包
twit
)
主要功能
- 登录和发送推文
- 刷新和查看推文
- 关注和取消关注用户
- Markdown 支持
- 评论和回复功能
MVC 模块
自定义的 MVC 模块分为三个主要部分:模型(Model)、视图(View)和控制器(Controller)。
// models/post.js
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const PostSchema = new Schema({
title: String,
content: String,
author: String,
createdAt: { type: Date, default: Date.now }
});
module.exports = mongoose.model('Post', PostSchema);
// controllers/postController.js
const Post = require('../models/post');
exports.getAllPosts = async (req, res) => {
try {
const posts = await Post.find();
res.json(posts);
} catch (error) {
res.status(500).json({ message: error.message });
}
};
exports.createPost = async (req, res) => {
const post = new Post(req.body);
try {
await post.save();
res.status(201).send(post);
} catch (error) {
res.status(400).json({ message: error.message });
}
};
// routes/postRoutes.js
const express = require('express');
const router = express.Router();
const postController = require('../controllers/postController');
router.get('/', postController.getAllPosts);
router.post('/', postController.createPost);
module.exports = router;
Twitter API 集成
使用 twit
包来集成 Twitter API。
// controllers/twitterController.js
const Twit = require('twit');
const T = new Twit({
consumer_key: 'YOUR_CONSUMER_KEY',
consumer_secret: 'YOUR_CONSUMER_SECRET',
access_token: 'YOUR_ACCESS_TOKEN',
access_token_secret: 'YOUR_ACCESS_TOKEN_SECRET'
});
exports.getTweets = async (req, res) => {
try {
const tweets = await T.get('search/tweets', { q: '#nodejs', count: 10 });
res.json(tweets.data.statuses);
} catch (error) {
res.status(500).json({ message: error.message });
}
};
当前问题与未来计划
- 后台管理模板:缺乏后台管理模板,导致无法开放注册。
- 文本编辑器:当前功能不全,需要一个静态的文本编辑器。
- 性能优化:一些必要的优化尚未完成。
总结
虽然项目还在不断改进中,但已经实现了基本的功能,并且支持 Express 的路由语法。如果你有任何建议或想要贡献代码,请随时联系。
还是可以的!
数据保存在哪里?
mongodb跟 appfog 上面的一个图片空间。
看了你的,我才发现,我的响应式导航在手机上效果太烂了
效果?我也是用的bootstrap 的。 有什么好建议吗?
谁给我提供个后台管理的模版
刚刚添加了,刷新twitter 功能。但是占时只能刷新内容,而且功能十分简单。看了下twitter api ,发现看的巨困难,实在是不太懂怎么调用https 的 api,所以只好用 npm 封装好的东东了。 很简单。要是有关于twitter api 的质料,也请提供一下。
界面上可以加强一下。
我就是对界面不熟悉才要找一套好的后台模版
刷新,大家去看看twitter 那里简单实现还需要什么功能?
针对你的需求,我们可以详细探讨如何使用Express框架配合自定义的MVC模块来构建一个博客系统,并简要介绍如何处理前端的AngularJS和后端的Twitter API调用。
示例代码
后端:Express + MVC模块
首先,假设我们有一个简单的MVC架构:
-
Controller(控制器):
// controllers/blog.js const express = require('express'); const router = express.Router(); router.get('/post/:id', (req, res) => { const postId = req.params.id; // 这里是从数据库获取数据 res.render('post', { postId }); }); module.exports = router;
-
Router(路由):
// routes/blog.js const express = require('express'); const blogController = require('../controllers/blog'); const router = express.Router(); router.use('/posts', blogController); module.exports = router;
-
App.js(主应用):
// app.js const express = require('express'); const blogRoutes = require('./routes/blog'); const app = express(); app.use('/api', blogRoutes); app.listen(3000, () => { console.log('Server is running on port 3000'); });
前端:AngularJS
在前端部分,你可以通过AngularJS来调用后端API:
// angularApp.js
var app = angular.module('blogApp', []);
app.controller('BlogController', function($scope, $http) {
$scope.loadPost = function(id) {
$http.get('/api/posts/post/' + id)
.then(function(response) {
$scope.post = response.data;
});
};
});
Markdown 处理
对于Markdown的处理,你可以使用marked
库:
// server-side markdown handling
const marked = require('marked');
const html = marked('Hello *world*!');
console.log(html); // 输出为HTML
总结
以上代码展示了一个简单的Express+MVC模块用于创建博客路由,同时通过AngularJS从后端获取并展示数据。至于Twitter API调用,可以使用twit
库封装请求,简化复杂性。
这种架构设计提供了清晰的分层结构,易于维护和扩展。希望这能帮助你更好地理解和构建你的博客系统。