1 Star 0 Fork 768

发光小子 / DoraCMS

forked from doramart / DoraCMS 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
app.js 4.94 KB
一键复制 编辑 原始数据 按行查看 历史
doramart 提交于 2015-08-30 13:57 . DoraCMS代码重构

/*引用模块*/
var express = require('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 compression = require('compression');
var routes = require('./routes/index');
//用户相关功能
var users = require('./routes/users');
var admin = require('./routes/admin');
var content = require('./routes/content');
//验证器
var validat = require('./routes/validat');
//系统功能支持
var system = require('./routes/system');
//站点配置
var Settings = require("./models/db/settings");
var siteFunc = require("./models/db/siteFunc");
//文件操作对象
var fs = require('fs');
//时间格式化
var moment = require('moment');
//引入session插件
var fk = require('stuwebfk');
/*模板引擎*/
var partials = require('express-partials');
/*实例化express对象*/
var app = express();
//ueditor注册
var ueditor = require('ueditor-nodejs');
app.use('/ueditor/ue', ueditor({//这里的/ueditor/ue是因为文件件重命名为了ueditor,如果没改名,那么应该是/ueditor版本号/ue
configFile: '/ueditor/jsp/config.json',//如果下载的是jsp的,就填写/ueditor/jsp/config.json
mode: 'local', //本地存储填写local
accessKey: '',//本地存储不填写,bcs填写
secrectKey: '',//本地存储不填写,bcs填写
staticPath: path.join(__dirname, 'public'), //一般固定的写法,静态资源的目录,如果是bcs,可以不填
dynamicPath: '/blogpicture' //动态目录,以/开头,bcs填写buckect名字,开头没有/.路径可以根据req动态变化,可以是一个函数,function(req) { return '/xx'} req.query.action是请求的行为,uploadimage表示上传图片,具体查看config.json.
}));
// view engine setup
//静态压缩
app.use(compression());
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
app.use(partials());
// uncomment after placing your favicon in /public
//app.use(favicon(__dirname + '/public/favicon.ico'));
app.use(logger('dev'));
app.use(bodyParser.json({limit: '50mb'})); // 限制上传5M
app.use(bodyParser.urlencoded({ extended: false , limit: '50mb' }));
app.use(cookieParser());
//解决异步层次混乱问题
app.use(require('express-promise')());
//session设置
app.use(fk.session);
app.use(function(req, res, next){
// 针对注册会员
res.locals.logined = req.session.logined;
res.locals.userInfo = req.session.userInfo;
// 针对管理员
res.locals.adminlogined = req.session.adminlogined;
res.locals.adminUserInfo = req.session.adminUserInfo;
// 指定站点域名
res.locals.myDomain = req.headers.host;
next();
});
//配置站点地图和robots抓取
app.get('/sitemap.xml',function(req, res, next) {
var stream=fs.createReadStream('./sitemap.xml',{flags:'r'});
stream.pipe(res);
});
app.get('/robots.txt',function(req, res, next) {
var stream=fs.createReadStream('./robots.txt',{flags:'r'});
stream.pipe(res);
});
//非www跳转到www
app.get('/*', function (req, res, next) {
var haswww = req.headers.host.match(/^www\./)
, url = ['http://www.', req.headers.host, req.url].join('');
if((req.headers.host).indexOf('127')>=0){
next();
}else{
haswww ? next() : res.redirect(301, url);
}
});
//数据格式化
app.locals.myDateFormat = function(date){
moment.locale('zh-cn');
return moment(date).startOf('hour').fromNow();
};
app.locals.myDateFormat1 = function(date){
return moment(date).format('HH:mm MM-DD-YYYY');
};
//缩略图生成参数
app.locals.thumbnailUrl = function(size){
return '?imageMogr2/thumbnail/'+size+'/strip/quality/100/format/png';
};
//字符截取
app.locals.cutMoreWords = function(str,length){
var newStr = str;
if(str.length > length){
newStr = str.substring(0,length) + "..."
}
return newStr;
};
app.use(express.static(path.join(__dirname, 'public')));
/*指定路由控制*/
app.use('/admin', validat);
app.use('/admin', admin);
app.use('/users', users);
app.use('/', routes);
app.use('/content', content);
app.use('/system',system);
// catch 404 and forward to error handler
app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
console.log(err);
res.render('web/public/do404', siteFunc.setDataForError(req, res, '找不到页面' ,err.message));
});
// error handlers
// development error handler
// will print stacktrace
if (app.get('env') === 'development') {
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('web/public/do500', siteFunc.setDataForError(req, res, '出错啦!' ,err.message));
});
}
// production error handler
// no stacktraces leaked to user
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('web/public/do500', siteFunc.setDataForError(req, res, '出错啦!' , err.message));
});
module.exports = app;
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/highlightBoy/DoraCMS.git
git@gitee.com:highlightBoy/DoraCMS.git
highlightBoy
DoraCMS
DoraCMS
master

搜索帮助

344bd9b3 5694891 D2dac590 5694891