// development only
if (‘development’ == app.get(‘env’)) {
app.use(express.errorHandler());
}
app.get(‘/’, routes.index);
app.get(‘/users’, user.list);
http.createServer(app).listen(app.get(‘port’), function(){
console.log(‘Express server listening on port ‘ + app.get(‘port’));
});
我们通过require()命令加载express、http模块,并且会加载routes目录下index user等模板文件
app.set(‘port’, process.env.PORT || 3000)为设置启动时候的端口
app.set(‘views’, __dirname + ‘/views’)为设置存放模板文件的路径,其中__dirname为全局变量,存放当前脚本所在目录,我们这样可以查看:
console.log(__dirname);//index.js加入以下代码
/**
D:blog>node app
Express server li
D:blogroutes
*/
至于这个__dirname是如何获得的,我们暂时也不需要关注
app.set(‘view engine’, ‘ejs’) 为设置模板引擎为ejs
app.use(express.favicon())是设置图标想修改的话就自己去搞public下面的images文件
app.use(express.logger(‘dev’)); express依赖于connect这里就内建中间件会输出一些日志
app.use(express.json()); 用以解析请求体,这里就会把字符串动态转换为json对象
app.use(express.methodOverride()); connect内建中间件,用以处理post请求,并可以伪装put等http方法
app.use(app.router); 调用路由器解析规则
app.use(express.static(path.join(__dirname, ‘public’))); connect内建中间件,设置根目录下的public存放静态文件
if (‘development’ == app.get(‘env’)) {
app.use(express.errorHandler());
}
这句话意思是开发状况下要输出错误信息
app.get(‘/’, routes.index);
app.get(‘/users’, user.list);
这两句都是访问时刻具体的处理文件了,比如这里直接访问时默认访问的是routes.index
然后其内部才真正解析模板数据:
exports.index = function (req, res) {
console.log(__dirname);
res.render(‘index’, { title: ‘Express’ });
};
最后会调用上述代码创建http服务器并监听3000端口,成功后便可在网页上访问了
路由
前面我们使用这个方法构建路由
app.get(‘/’, routes.index);
上面代码可以使用这个代码取代(写在app里面)
app.get(‘/’, function (req, res) {
res.render(‘index’, { title: ‘Express’ });
});
这段代码的意思是访问主页时,调用ejs模板引擎,来渲染index.ejs模板文件









