小聂教你写nodejs之博客系统解析 - CNode技术社区

小聂教你写nodejs之博客系统解析
发布于 10 年前 作者 yanglinnie 5455 次浏览 最后一次编辑是 9 年前 来自 分享

最近nodejs小聂重写了自己的博客 用时六个小时左右

本博客系统源代码 (https://coding.net/u/niefengjun/p/blog_es6/git)
本博客系统的代码图

704215522044153856.png 先把目录结构做个简单介绍

config 配置文件
lib 主要逻辑文件夹

public 公共静态文件资源

routes 路由文件夹

views 模板引擎文件夹

admin.js 给博客添加管理员账号 密码 默认密码 12345

app.js 博客系统基本基本框架配置

www.js 博客启动文件

其实我把博客系统分为三个部分

1 输入参数框架层

我用的是express 框架来处理参数 和基础框架编写的问题的
解析下我的app.js
var express = require('express'); //express 框架
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var ejs = require('ejs');
var routes = require('./routes/index');
var ueditor = require("ueditor");
var app = express();
// 中间件
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(require('stylus').middleware(path.join(__dirname, 'public')));
app.use(express.static(path.join(__dirname, 'public')));
app.use(bodyParser.urlencoded({
 extended: true
}))
app.use(bodyParser.json());
//模板引擎
app.use(express.static(path.join(__dirname, 'public')));
app.set('views', path.join(__dirname, 'views'));
app.engine('.html', ejs.__express);
app.set('view engine', 'html');
//加载路由
app.use('/', routes);
//百度编辑器 上传图片处理
app.use("/ueditor/ue/", ueditor(path.join(__dirname, 'public'), function (req, res, next) {
 // ueditor 客户发起上传图片请求
 if (req.query.action === 'uploadimage') {
 var foo = req.ueditor;
 var date = new Date();
 var imgname = req.ueditor.filename;
 var img_url = '/images/ueditor/';
 res.ue_up(img_url); //你只要输入要保存的地址 。保存操作交给ueditor来做
 }
 // 客户端发起图片列表请求
 else if (req.query.action === 'listimage') {
 var dir_url = '/images/ueditor/';
 res.ue_list(dir_url); // 客户端会列出 dir_url 目录下的所有图片
 }
 else {
 // console.log('config.json')
 res.setHeader('Content-Type', 'application/json');
 res.redirect('/ueditor/nodejs/config.json');
 }
}));
//404 页面处理
app.use(function(req, res, next) {
 res.render('404');
});
//日志插件
var log4js = require('log4js');
log4js.configure('config/log4js.json');
global.logger = log4js.getLogger();
app.use(log4js.connectLogger(logger,
 {
 format: ':method :url HTTP/:http-version :status :res[content-length] - :response-time ms',
 nolog: ["\\.jpg", "\\.ico", "\\.png", "\\.gif", "\\.js", "\\.css", "\\.swf"]
 }));
module.exports = app;
 2 逻辑处理部分
 逻辑处理相对来说比较简单 这里就不做介绍了
 3 数据库部分
 本博主为了节省开支 服务器用的是最低配的阿里云 所以数据库也就采用最轻量级的nedb
//数据库连接部分
var Datastore = require('nedb');
exports.getnedb = function (collectionName) {
 return db1 = new Datastore({filename: '../db/niefengjun/' collectionName, autoload: true});
}
var db = require('./db').getnedb('blog');
var Q = require('q');
//插入博客
function add(ret) {
 var defer = Q.defer();
 db.insert(ret, function (e, v) {
 if (e) {
 console.error(e, v);
 defer.reject(e)
 }
 else {
 defer.resolve(v);
 }
 }
 );
 return defer.promise;
}
//博客列表 
function list() {
 var defer= Q.defer() ;
 db.find({}).sort({created: -1}).skip().exec(function (err, list) {
 if(err)
 {
 defer.reject(err);
 }
 else
 {
 defer.resolve(list)
 }
 });
 return defer.promise ;
}
\n```
 至此非常简单的三步 就把博客写好了 前端模板引擎用的是ejs 可以参阅博客的其他文章了解模板引擎 这里就不多介绍了 
	 
	 
	原文地址 : http://www.niefengjun.cn/blog/1e406ade4349666d93d9ec8b234ad0f9.html?u=cnodejsboke
9 回复

第一眼看成聂小倩 -。 -

楼上的我也是。。。 <br> 来自宇宙超级无敌帅的南风小神仙~~

哈哈哈 聂小倩

回到顶部

AltStyle によって変換されたページ (->オリジナル) /