Express æ¯ä¸ä¸ªç®æ´ãçµæ´»ç node.js Web åºç¨å¼åæ¡æ¶, å®æä¾ä¸ç³»å强大çç¹æ§ï¼å¸®å©ä½ å建åç§ Web å移å¨è®¾å¤åºç¨ã
1.expressç»ç»ç»æ
app demo
|---node_modules------ç¨äºå®è£
æ¬å°æ¨¡åã
|---public------------ç¨äºåæ¾ç¨æ·å¯ä»¥ä¸è½½å°çæ件ï¼æ¯å¦å¾çãèæ¬ãæ ·å¼è¡¨çã
|---routes------------ç¨äºåæ¾è·¯ç±æ件ã
|---views-------------ç¨äºåæ¾ç½é¡µç模æ¿ã
|---app.js------------åºç¨ç¨åºçå¯å¨èæ¬ã
|---package.json------项ç®çé
ç½®æ件ã
2..å建expressæå¡å¨
//app.jsæ件
var express = require('express');
var app = express();
//æå®æ´ç®å½æ¾ç¤ºçå
容
app.get('/', function(req, res){
res.send('Hello World');
});
//æå®çå¬ç«¯å£
var server = app.listen(3000, function() {
console.log('Listening on port %d', server.address().port);
});
è¿è¡nodejsåºç¨ç¨åº
/>node app.js
3.ä¸é´ä»¶
ä¸é´ä»¶(middleware)å°±æ¯å¤çHTTP请æ±çå½æ°.
å½ä¸ä¸ªHTTP请æ±è¿å
¥æå¡å¨ï¼æå¡å¨å®ä¾ä¼è°ç¨ç¬¬ä¸ä¸ªä¸é´ä»¶ï¼å®æåæ ¹æ®è®¾ç½®ï¼å³å®æ¯å¦åè°ç¨ä¸ä¸ä¸ªä¸é´ä»¶.
ä¸é´ä»¶çåæ°ä¸º:
.å个çæ¶å---第ä¸ä¸ªä¸ºé误å¤çï¼ç¬¬äºä¸ªä¸ºå®¢æ·è¯·æ±requestï¼ç¬¬ä¸ä¸ªä¸ºæå¡å¨ååºrespondï¼ç¬¬å个为nextä¸é´ä»¶. å¦function(error, request, response, next){}
.ä¸ä¸ªçæ¶å---第ä¸ä¸ªå®¢æ·è¯·æ±requestï¼ç¬¬äºä¸ªä¸ºæå¡å¨ååºrespondï¼ç¬¬ä¸ä¸ªä¸ºnextä¸é´ä»¶. å¦function(request, response, next){}
.两个çæ¶å---第ä¸ä¸ªå®¢æ·è¯·æ±requestï¼ç¬¬äºä¸ªä¸ºæå¡å¨ååºrespondfunction. å¦function(request, response){}
4.使ç¨ä¸é´ä»¶use
useæ¯expressè°ç¨ä¸é´ä»¶çæ¹æ³ï¼å®è¿åä¸ä¸ªå½æ°.
app.use(function(request, response) {
response.writeHead(200, { "Content-Type": "text/plain" });
response.end("Hello world!\n");
});
5.é误å
容æ¾ç¤º
app.use(express.bodyParser());//使ç¨bodyåæ°
app.use(express.methodOverride());//使ç¨å½æ°è¦ç
app.use(app.router);//使ç¨è·¯ç±
app.use(function(err, req, res, next){
console.error(err.stack);
res.send(500, 'Something broke!');
});//é误å
容æ¾ç¤º
6.è·¯ç±
expressè·¯ç±çæ¹å¼æå¤ç§ï¼è¿é举ä¾å¸¸ç¨çå ç§:
.app.use('/', middleware);//get/postæ¶ï¼å¯¹äºè·¯å¾/çå¤ç
.app.get("/", middleware);//httpä¸getæ¶ï¼å¯¹äºè·¯å¾/çå¤ç
.app.post("/", middleware);//httpä¸postæ¶ï¼å¯¹äºè·¯å¾/çå¤ç
.app.put("/", middleware);//httpä¸putæ¶ï¼å¯¹äºè·¯å¾/çå¤ç
.app.delete("/", middleware);//httpä¸deleteæ¶ï¼å¯¹äºè·¯å¾/çå¤ç
7.è·¯å¾éé
符*
.*表示ææè·¯å¾
app.get("*", function(request, response) {
response.end("404!");
});//ææè·¯å¾é½è¿å404
.:æè·è·¯å¾å
容
app.get("/hello/:who", function(req, res) {
res.end("Hello, " + req.params.who + ".");
});//å¦"/hello/aliceâç½åï¼ç½åä¸çaliceå°è¢«æè·ï¼ä½ä¸ºreq.params.whoå±æ§çå¼
8.设置ç¯å¢åéset
setç¨äºæå®åéçå¼.
app.set("view engine", "ejs");//使ç¨ejsä½ä¸ºæ¨¡ç
9.response对象æ¹æ³
.éå®åredirect
response.redirect("/hello/anime");//éå®åå°/hello/anime
.åéæ件sendFile
response.sendFile("/path/to/anime.mp4");
.渲æç½é¡µæ¨¡æ¿renderï¼å³æåæ¢çå
容å è½½å°ç½é¡µ.
response.render("index", { message: "Hello World" });//å°messageåéä¼ å
¥index模æ¿ï¼å¼ä¸º"Hello World"渲ææHTMLç½é¡µ
10.requst对象æ¹æ³
.è·å客æ·ipå°å:request.ip
.è·åä¸ä¼ çæ件:request.files
11.å¯å¨èæ¬package.json
package.jsonç¨äºæå®appä¿¡æ¯ï¼nodejsçæ¬å·åå
¶ä»ç»ä»¶çä¾èµå
³ç³»
{
"name": "demo",
"description": "My First Express App",
"version": "0.0.1",
"dependencies": {
"express": "3.x"
}
}
12.appå
¥å£app.js
app.js主è¦å
å«httpçå建ï¼åºæ¬è·¯ç±ï¼çå¬ç«¯å£å·
13.å¨æç½é¡µæ¨¡æ¿views
viewsæ件夹ï¼ç¨äºåæ¾ææçæ¾ç½é¡µæ¨¡æ¿.
//app.js
app.get('/', function(req, res) {
res.render('index',{title:"æè¿æç« "});
});
//index.js
this is <%=title%>!
14.æå®éæç½é¡µç®å½
//app.js
app.use(express.static('public'));//æå®éæç½é¡µç®å½,å½æµè§å¨ååºéHTMLæ件请æ±æ¶ï¼æå¡å¨ç«¯å°±å°publicç®å½å¯»æ¾è¿ä¸ªæ件
å¦ï¼<link href="/bootstrap/css/bootstrap.css" rel="stylesheet">, æå¡å¨ç«¯å°±å°public/bootstrap/css/ç®å½ä¸å¯»æ¾bootstrap.cssæ件
温馨提示:答案为网友推荐,仅供参考