forked from pure-css/pure-site
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.js
127 lines (96 loc) · 3.85 KB
/
app.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
var combo = require('combohandler'),
express = require('express'),
exphbs = require('express3-handlebars'),
path = require('path'),
state = require('express-state'),
config = require('./config'),
hbs = require('./lib/hbs'),
middleware = require('./lib/middleware'),
routes = require('./lib/routes'),
app = express();
// -- Config -------------------------------------------------------------------
app.set('name', 'Pure');
app.set('env', config.env);
app.set('port', config.port);
app.enable('strict routing');
app.engine(hbs.extname, hbs.engine);
app.set('view engine', hbs.extname);
app.set('views', config.dirs.views);
app.expose(config.yui.config, 'YUI_config');
app.locals({
site : 'Pure',
copyright_year: '2013',
version : config.version,
pure_version: config.pure.version,
yui_version : config.yui.version,
nav : [],
pages: {},
isDevelopment: config.isDevelopment,
isProduction : config.isProduction,
isPureLocal : !!config.pure.local,
min: config.isProduction ? '-min' : '',
modules : config.pure.modules,
filesizes: config.pure.filesizes,
ga : config.isProduction && config.ga,
typekit: config.typekit
});
// -- Middleware ---------------------------------------------------------------
if (config.isDevelopment) {
app.use(express.logger('tiny'));
}
app.use(express.compress());
app.use(express.favicon(path.join(config.dirs.pub, 'favicon.ico')));
app.use(app.router);
app.use(middleware.slash);
if (config.pure.local) {
console.log('Serving Pure from:', config.pure.local);
app.use('/css/pure/', express.static(config.pure.local));
}
app.use(express.static(config.dirs.pub));
app.use(middleware.notfound);
if (config.isDevelopment) {
app.use(express.errorHandler({
dumpExceptions: true,
showStack : true
}));
} else {
app.use(middleware.error);
}
// -- Routes -------------------------------------------------------------------
function routePage(id, path, label, callbacks) {
if (typeof label !== 'string') {
callbacks = label;
label = null;
}
var navItem;
app.get(path, callbacks);
app.locals.pages[id] = path;
if (label) {
navItem = {id: id, url: path, label: label};
if (id === 'customize') {
navItem.divider = true;
}
app.locals.nav.push(navItem);
}
}
routePage('home', '/', routes.render('home'));
routePage('base', '/base/', '기본', routes.render('base'));
routePage('grids', '/grids/', '그리드', routes.render('grids'));
routePage('forms', '/forms/', '폼', routes.render('forms'));
routePage('buttons', '/buttons/', '버튼', routes.render('buttons'));
routePage('tables', '/tables/', '테이블', routes.render('tables'));
routePage('menus', '/menus/', '메뉴', routes.render('menus'));
routePage('customize', '/customize/', '커스텀하기', routes.render('customize'));
routePage('extend', '/extend/', '확장하기', routes.render('extend'));
routePage('layouts', '/layouts/', '레이아웃들', routes.render('layouts'));
routePage('updates', '/updates/', '업데이트', routes.render('updates'));
routePage('layoutsGallery', '/layouts/gallery/', routes.render('layouts/gallery', 'blank'));
routePage('layoutsMarketing', '/layouts/marketing/', routes.render('layouts/marketing', 'blank'));
routePage('layoutsEmail', '/layouts/email/', routes.render('layouts/email', 'blank'));
routePage('layoutsBlog', '/layouts/blog/', routes.render('layouts/blog', 'blank'));
app.get('/combo/:version', [
combo.combine({rootPath: config.dirs.pub}),
combo.respond
]);
// -- Exports ------------------------------------------------------------------
module.exports = app;