最近nodejs小聂重写了自己的博客 用时六个小时左右
本博客系统源代码 https://coding.net/u/niefengjun/p/blog_es6/git
本博客系统的代码图
先把目录结构做个简单介绍
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 ; }
至此非常简单的三步 就把博客写好了 前端模板引擎用的是ejs 可以参阅博客的其他文章了解模板引擎 这里就不多介绍了
你打算打赏多少钱呢?
(微信扫一扫)