Sep 10, 2012 -
node.js
No Comments


Node.js Express.js 学习笔记(1)
先来看一下生成的app.js的代码,这是项目的入口:
/** * Module dependencies. */ var express = require('express') , routes = require('./routes') , user = require('./routes/user') , http = require('http') , path = require('path'); var app = express(); app.configure(function(){ app.set('port', process.env.PORT || 3000); app.set('views', __dirname + '/views'); app.set('view engine', 'ejs'); app.use(express.favicon()); app.use(express.logger('dev')); app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(express.cookieParser('your secret here')); app.use(express.session()); app.use(app.router); app.use(require('stylus').middleware(__dirname + '/public')); app.use(express.static(path.join(__dirname, 'public'))); }); app.configure('development', function(){ 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')); });
一行一行来看代码:
var express = require('express') , routes = require('./routes') , user = require('./routes/user') , http = require('http') , path = require('path');
首先导入了express模块,http和path也都是必须要用到的核心模块。
routes是一个文件夹形式的本地模块,其实就是指向了 ./routes/index.js
user其实就是指向了routes文件夹下的user.js文件。
app.get('/', routes.index); app.get('/users', user.list);
访问 http://127.0.0.1:3000/ 其实就是由routes分配给了routes.index来控制。
这里的index并不是./routes/ 文件夹下的index.js文件,而是index.js里的一个函数,看代码:
exports.index = function(req, res){ res.render('index', { title: 'Express' }); };
也就是说访问 http://127.0.0.1:3000/ 这个根目录,会把路径’/’映射到exports.index函数下。
这个函数只有一行代码:
res.render('index', { title: 'Express' });
功能就是调用模板引擎,解析名为index的模板,并把一个对象传给index模板,这个对象就是{ title: ‘Express’ }
以下就是位于./views/index.ejs的代码,index.ejs就是模板文件:
<!DOCTYPE html> <html> <head> <title><%= title %></title> <link rel='stylesheet' href='/stylesheets/style.css' /> </head> <body> <h1><%= title %></h1> <p>Welcome to <%= title %></p> </body> </html>
——–路径的分割线———
接下来我们访问 http://127.0.0.1:3000/users
根据上面的经验,我们知道首先当我们访问 ‘/users’ 这个路径时,路由器把这个路径分配给了 ‘user.list’, 这里的user 指向了 ‘./routes/user.js’;
‘user.list’ 即 user.js里的 exports.list 函数,看user.js的代码:
exports.list = function(req, res){ res.send("respond with a resource"); };
这里没有调用模板,而是直接输出了一句话”respond with a resource”!