app.js 1.39 KB
/**
 * yohobuy app
 * @author: xuqi<qi.xu@yoho.cn>
 * @date: 2016/4/25
 */
'use strict';

const config = require('./config/common');

// use one apm
if (config.useOneapm) {
    require('oneapm');
}

const express = require('express');
const path = require('path');
const bodyParser = require('body-parser');
const cookieParser = require('cookie-parser');
const favicon = require('serve-favicon');
const session = require('express-session');
const memcached = require('connect-memcached');
const pkg = require('./package.json');

const app = express();
const MemcachedStore = memcached(session);


// 向模板注入变量
app.locals.devEnv = app.get('env') === 'development';
app.locals.version = pkg.version;

// 指定libray目录
global.library = path.resolve('./library/');

app.set('view engine', '.hbs');

app.use(favicon(path.join(__dirname, '/public/favicon.ico')));
app.use(express.static(path.join(__dirname, 'public')));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));
app.use(cookieParser());
app.use(session({
    secret: '3e5fec7deca0b8305cefe2ad9d90ff5e',
    name: 'PHPSESSID',
    prefix: 'yohobuy',
    proxy: true,
    resave: true,
    saveUninitialized: true,
    store: new MemcachedStore({
        hosts: config.memcache.session
    })
}));

// dispatcher
require('./dispatch')(app);

// listener
app.listen(config.port, function() {
    console.log('yohobuy start');
});