Express學習javascript
app.set('title', 'My Site');html
app.get('title'); // "My Site"java
app.get(「string」)和app.get(path, [callback...], callback)要區別開,前面一個函數是獲取string的value,然後一個是路由函數。node
下面的內建的能夠改變Express行爲的設置jquery
經常使用的set設置:express
app.set('port', process.env.PORT || 3000); //設置端口npm
app.set('views', __dirname + '/views'); json
app.set('view engine', 'html');// app.set('view engine', 'ejs');緩存
註冊模板引擎的 callback 用來處理ext擴展名的文件 默認狀況下, 根據文件擴展名require() 對應的模板引擎。cookie
app.engine('.html', ejs.__express);
app.engine('.ejs', ejs.__express);
app.engine('.jade', jade.__express);
使用中間件 function,可選參數path默認爲"/"。這個中間件是nodejs最重要的功能,express也繼承了中間件的功能。當path爲\或者無時,也就意味着每個頁面每個請求都會執行。根據這個功能可使用中間件作路由。
app.use(function(req, res, next){
res.locals.user = req.session.user;
var err = req.session.error;
delete req.session.error;
res.locals.message = '';
if (err) res.locals.message = '<div class="alert alert-error">' + err + '</div>';
next();
});
這個函數會在每個頁面請求時都被調用。
app.use(express.static(path.join(__dirname, 'public')));,express.static( )是處理靜態請求的,設置了public文件,public下全部文件都會以靜態資料文件形式返回(如樣式、腳本、圖片素材等文件)
l 路由
app.use('/', routes);
app.use('/reg', reg);
app.use('/login', login);
app.use('/logout', logout);
l 供應器
它會針對請求進行迴應,你能夠根據你的需求使用多箇中間件,Http請求將會經過每個中間件直到其中一箇中間件對請求進行迴應。
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.cookieParser());
app.use(express.cookieSession({secret : 'blog.fens.me'}));
app.use(express.session({
secret : 'blog.fens.me',
store: store,
cookie: { maxAge: 900000 } // expire session in 15 min or 900 seconds
}));
app.VERB() 方法爲Express提供路由方法, VERB 是指某一個HTTP 動做, 好比 app.post()。 能夠提供多個callbacks,這多個callbacks都將會被平等對待 ,它們的行爲跟中間件同樣,也有一個例外的狀況,若是某一個callback執行了next('route'),它後面的callback就被忽略。這種情形會應用在當知足一個路由前綴,可是不須要處理這個路由,因而把它向後傳遞。
app.get('/', routes.index);
app.all('/login', notAuthentication);
app.get('/login', routes.login);
app.post('/login', routes.doLogin);
app.get('/logout', authentication);
app.get('/logout', routes.logout);
app.get('/home', authentication);
app.get('/home', routes.home);
//mongo
app.get('/movie/add',movie.movieAdd);
app.post('/movie/add',movie.doMovieAdd);
app.get('/movie/:name',movie.movieAdd);
app.get('/movie/json/:name',movie.movieJSON);
app.get('/users', user.list);
這個是一個路由函數,做用跟app.use('/', routes)同樣。
l req.params
// GET /file/javascripts/jquery.js
req.params[0]
// => "javascripts/jquery.js"
// GET /user/tj
req.params.name
// => "tj"
附錄:
nodeJs免安裝環境下裝express:
npm config set prefix " N:\nodejs" //設置npm install -g module時路徑
npm config set cache "N:\ nodejs\node_cache"
「path」,輸入"N:\nodejs" //設置node環境變量
「NODE_PATH」,輸入「N:\nodejs\node_modules」 //設置插件環境變量
npm install -g express@3.16.0
4.0時須要先安裝npm install -g express-generator而後安裝npm install -g express
npm uninstall moudleName: //卸載node模塊