±¾ÎÄÕë¶ÔÄÇЩ¶ÔNode.jsÓÐÒ»¶¨Á˽âµÄ¶ÁÕß¡£¼ÙÉèÄãÒѾ֪µÀÈçºÎÔËÐÐNode´úÂ룬ʹÓÃnpm°²×°ÒÀÀµÄ£¿é¡£µ«ÎÒ±£Ö¤£¬Äã²¢²»ÐèÒªÊÇÕâ·½ÃæµÄר¼Ò¡£±¾ÎÄÕë¶ÔµÄÊÇExpress
3.2.5°æ±¾£¬ÒÔ½éÉÜÏà¹Ø¸ÅÄîΪÖ÷¡£
Express.jsÕâôÃèÊö×Ô¼º£º¡±ÇáÁ¿Áé»îµÄNode.js WebÓ¦Óÿò¼Ü¡±¡£Ëü¿ÉÒÔ°ïÖúÄã¿ìËٴwebÓ¦Óá£Èç¹ûÄãʹÓùýRubyÀïµÄSinatra,ÄÇôÏàÐÅÄã¶ÔÕâ¸öÒ²»áºÜ¿ì¾ÍÄÜÊìϤ¡£
ºÍÆäËûweb¿ò¼ÜÒ»Ñù£¬ExpressÒþ²ØÁË´úÂë±³ºóµÄµzÃÜ£¬È»ºó¸æËßÄ㣺¡±±ðµ£ÐÄ£¬Äã²»ÓÃÈ¥Àí½âÕâ¸ö²¿·Ö¡±¡£ËüÀ´°ïÄã½â¾öÕâЩÎÊÌ⣬ËùÒÔÄã²»ÓÃȥΪÕâ¸ö¶ø·³ÄÕ£¬Ö»Óý«ÖØÐļ¯Öе½´úÂëÉÏ¡£»»¾ä»°Ëµ£¬ËüÓÐijЩħ·¨£¡
ExpressµÄwikiÀï½éÉÜÁËһЩËüµÄʹÓÃÕߣ¬ÆäÖоÍÓкܶàÖªÃûµÄ¹«Ë¾: MySpace, Klout.
µ«ÊÇÓµÓÐħÁ¦ÊÇÐèÒª¸¶³ö´ú¼ÛµÄ£¬Äã¿ÉÄܸù±¾¾Í²»ÖªµÀËüµÄ¹¤×÷ÔÀí¡£ÕýÈç¼ÝʻһÁ¾Æû³µ£¬ÎÒ¿ÉÒԺܺõļÝÔ¦Ëüµ«ÊÇ¿ÉÄܲ»Àí½âΪʲôÆû³µ¿ÉÒÔÕý³£¹¤×÷£¬µ«ÊÇÎÒ×îºÃÖªµÀÕâЩ¶«Î÷¡£Èç¹û³µ»µµôÔõô°ì£¿Èç¹ûÄãÏë×î´ó³Ì¶ÈµÄÈ¥·¢»ÓËüµÄÐÔÄÜ£¿Èç¹ûÄã¶Ô֪ʶÓÐÎÞÏ޵ĿÊÍû²¢ÏëȥŪÇåËü£¿
ÄÇôÎÒÊ×ÏÈ´ÓÀí½âExpressµÄ×îµ×²ã-Node¿ªÊ¼¡£
µ×²ã£ºNode HTTP·þÎñÆ÷
NodeÖÐÓÐHTTPÄ£¿é, Ëü½«´î½¨Ò»¸öweb·þÎñÆ÷µÄ¹ý³Ì³éÏó³öÀ´¡£Äã¿ÉÒÔÕâÑùʹÓÃ:
// ÒýÈëËùÐèÄ£¿é 2.var http = require("http"); 3. 4.// ½¨Á¢·þÎñÆ÷ 5.var app = http.createServer(function(request, response) { 6. response.writeHead(200, { 7. "Content-Type": "text/plain" 8. }); 9. response.end("Hello world!\n"); 10.}); 11. 12.// Æô¶¯·þÎñÆ÷ 13.app.listen(1337, "localhost"); 14.console.log("Server running at http://localhost:1337/");
|
ÔËÐÐÕâ¸ö³ÌÐò(¼ÙÉèÎļþÃûΪ app.js ,ÔËÐÐ node app.js )£¬Äã»áµÃµ½¡±Hello world!¡°
ÔÚä¯ÀÀÆ÷·ÃÎÊlocalhost:1337 £¬Äã»áµÃµ½Í¬ÑùµÄ½á¹û¡£ÄãÒ²¿ÉÒÔ³¢ÊÔ·ÃÎÊÆäËûµØÖ·£¬Èç localhost:1337/whatever
£¬½á¹ûÈÔÈ»»áÒ»Ñù¡£
·Ö½âÒÔÉÏ´úÂëÀ´¿´¡£
µÚÒ»ÐÐʹÓà require º¯ÊýÒýÈëNodeÄÚÖÃÄ£¿é http ¡£È»ºó´æÈëÃûΪ http µÄ±äÁ¿ÖС£Èç¹ûÄãÒªÁ˽â¸ü¶à¹ØÓÚrequireº¯ÊýµÄ֪ʶ£¬²Î¿¼NodejitsuµÄÎĵµ¡£
È»ºóÎÒÃÇʹÓà http.createServer ½«·þÎñÆ÷±£´æÖÁ app ±äÁ¿¡£Ëü½«Ò»¸öº¯Êý×÷Ϊ²ÎÊý¼àÌýÇëÇó¡£ÉԺ󽫻áÏêϸ½éÉÜËü¡£
×îºóÎÒÃÇÒª×öµÄ¾ÍÊǸæËß·þÎñÆ÷¼àÌýÀ´×Ô1337¶Ë¿ÚµÄÇëÇó£¬Ö®ºóÊä³ö½á¹û¡£È»ºóÒ»ÇÐÍê³É¡£
ºÃµÄ£¬»Øµ½requestÇëÇó´¦Àíº¯Êý¡£Õâ¸öº¯ÊýÏàµ±ÖØÒª¡£
request·½·¨
ÔÚ¿ªÊ¼Õâ¸ö²¿·Ö֮ǰ£¬ÎÒÊÂÏÈÉùÃ÷ÕâÀïËùÉæ¼°µÄHTTPÏà¹ØÖªÊ¶ÓëѧϰExpress±¾ÉíûÓÐÌ«´ó¹Ø‚S¡£Èç¹ûÄã¸ÐÐËȤ£¬¿ÉÒԲ鿴HTTPÄ£¿éÎĵµ¡£
ÈκÎʱºòÎÒÃÇÏò·þÎñÆ÷·¢ÆðÇëÇó£¬request·½·¨½«»á±»µ÷Óá£Èç¹ûÄã²»ÐÅ£¬Äã¿ÉÒÔ console.log
½«½á¹û´òÓ¡³öÀ´¡£Äã»á·¢ÏÖÿ´ÎÇëÇóÒ»¸öÒ³ÃæÊ±Ëü¶¼»á³öÀ´¡£
request ÊÇÀ´×Ô¿Í»§¶ËµÄÇëÇó¡£ÔںܶàÓ¦ÓÃÖУ¬Äã¿ÉÄܻῴµ½ËüµÄËõд
req ¡£×Ðϸ¿´´úÂë¡£ÎÒÃÇÐ޸ĴúÂëÈçÏÂ:
var app = http.createServer(function(request, response) { 2. 3. // ´´½¨answer±äÁ¿ 4. var answer = ""; 5. answer += "Request URL: " + request.url + "\n"; 6. answer += "Request type: " + request.method + "\n"; 7. answer += "Request headers: " + JSON.stringify(request.headers) + "\n"; 8. 9. // ·µ»Ø½á¹û 10. response.writeHead(200, {"Content-Type": "text/plain" }); 11. response.end(answer); 12. 13.});
|
ÖØÆô·þÎñÆ÷²¢Ë¢Ð localhsot:1337 .Äã»á·¢ÏÖ£¬Ã¿´Î·ÃÎÊÒ»¸öURL£¬¾Í»á·¢ÆðÒ»´ÎGETÇëÇ󣬲¢»áµÃµ½Ò»¶ÑÀàËÆÓû§´úÀí»òÕßһЩÆäËûµÄ¸ü¼ÓÑ}ÔÓµÄHTTPÏà¹ØÐÅÏ¢¡£Èç¹ûÄã·ÃÎÊ
localhost:1337/what_is_fraser, Äã»á¿´µ½requestµÄµØÖ··¢ÉúÁ˱仯¡£Èç¹ûÄãʹÓò»Í¬µÄä¯ÀÀÆ÷·ÃÎÊ£¬Óû§´úÀíÒ²»á¸úןı䣬Èç¹ûÄãʹÓÃPOSTÇëÇó£¬requestµÄ·½·¨Ò²ºÜ¸Ä±ä¡£
response ÊÇÁíÍâÒ»¸ö²¿·Ö¡£ÕýÈç request ±»ËõдΪ req £¬response ͬÑù±»¼òдΪ
res ¡£Ã¿´ÎresponseÄã¶¼»áµÃµ½¶ÔÓ¦µÄ·µ»Ø½á¹û£¬Ö®ºóÄã±ã¿ÉÒÔͨ¹ýµ÷Óà response.end
À´½áÊø¡£Êµ¼ÊÉÏ×îÖÕÄ㻹ÊÇÒªÖ´ÐÐÕâ¸ö·½·¨µÄ, ÉõÖÁÔÚnodeµÄÎĵµÀïÒ²ÊÇÕâôÃèÊöµÄ¡£Õâ¸ö·½·¨Íê³ÉÁËÕæÕýµÄÊý¾Ý´«Ê䲿·Ö¡£Äã¿ÉÒÔ½¨Á¢Ò»¸ö·þÎñÆ÷²¢²»µ÷ÓÃ
req.end ·½·¨£¬Ëü¾Í»áÓÀÔ¶´æÔÚ¡£
ÔÚÄã·µ»Ø½á¹û֮ǰ£¬ÄãÒ²¿ÉÒÔÌîдһÏÂheaderÍ·²¿²¿·Ö¡£ÎÒÃǵÄÀý×ÓÀïÊÇÕâôдµÄ:
response.writeHead(200, { "Content-Type":
"text/plain" }); |
Õâ¸ö²½ÖèÖ÷ÒªÍê³ÉÁ½¼þÊÂÇé¡£µÚÒ»£¬·¢ËÍHTTP״̬Â룬±íʾÇëÇó³É¹¦¡£Æä´Î£¬ËüÉèÖÃÁË·µ»ØµÄÍ·²¿ÐÅÏ¢¡£ÕâÀï±íʾÎÒÃÇÒª·µ»ØµÄÊÇ´¿Îı¾¸ñʽµÄÄÚÈÝ¡£ÎÒÃÇÒ²¿ÉÒÔ·µ»ØÀàËÆJSON»òÕßHTML¸ñʽµÄÄÚÈÝ¡£
¿´ÁËÉÏÃæµÄÖ®ºó£¬Äã¿ÉÄÜ»áÁ¢Âí¿ªÊ¼ÀûÓÃËüÀ´Ð´apiÁË¡£
var http = require("http"); 2. 3.http.createServer(function(req, res) { 4. 5. // Homepage 6. if(req.url == "/") { 7. res.writeHead(200, { "Content-Type": "text/html" }); 8. res.end("Welcome to the homepage!"); 9. } 10. 11. // About page 12. else if (req.url == "/about") { 13. res.writeHead(200, { "Content-Type": "text/html" }); 14. res.end("Welcome to the about page!"); 15. } 16. 17. // 404'd! 18. else { 19. res.writeHead(404, { "Content-Type": "text/plain" }); 20. res.end("404 error! File not found."); 21. } 22. 23.}).listen(1337, "localhost");
|
Äã¿ÉÒÔÑ¡ÔñÓÅ»¯´úÂ룬ÈÃËü±äµÃ¸üÕû½à¡£Ò²¿ÉÒÔÏònpm.orgµÄÄǰï‚í»ïÒ»ÑùÓÃÔÉúµÄNodeÀ´±àд¡£µ«ÊÇÄãÒ²¿ÉÒÔÑ¡ÔñÈ¥´´½¨Ò»¸ö¿ò¼Ü¡£Õâ¾ÍÊÇSenchaËù×öµÄ£¬²¢°ÑÕâ¸ö¿ò¼Ü³ÆÎª
¨C Connect.
Öмä¼þ: Connect
ConnectÊÇNodejsµÄÖмä¼þ¡£¿ÉÄÜÄãÏÖÔÚ»¹²¢²»Ì«Àí½âʲôÊÇÖмä¼þ(middleware)£¬±ðµ£ÐÄ£¬ÎÒÂíÉÏ»á½øÐÐÏêϸ½âÊÍ¡£
Ò»¶ÎConnect´úÂë
¼ÙÈçÎÒÃÇÏëÒª±àдºÍÉÏÃæÒ»ÑùµÄ´úÂ룬µ«ÊÇÕâ´ÎÎÒÃÇҪʹÓÃConnect.±ðÍü¼Ç°²×°ConnectÄ£¿é(npm
install)¡£Íê³ÉÖ®ºó£¬´úÂë¿´ÆðÀ´·Ç³£ÏàËÆ¡£
// ÒýÈëËùÐèÄ£‰K 2.var connect = require("connect"); 3.var http = require("http"); 4. 5.// ½¨Á¢app 6.var app = connect(); 7. 8.// Ìí¼ÓÖмä¼þ 9.app.use(function(request, response) { 10. response.writeHead(200, { "Content-Type": "text/plain" }); 11. response.end("Hello world!\n"); 12.}); 13. 14.// Æô¶¯Ó¦Óà 15.http.createServer(app).listen(1337);
|
ÏÂÃæ·Ö½âÕâ¶Î´úÂëÀ´¿´¡£
Ê×ÏÈÎÒÃÇ·Ö±ðÒýÈëÁËConnectºÍNode HTTPÄ£¿é¡£
½ÓÏÂÀ´ºÍ֮ǰһÑùÉùÃ÷ app ±äÁ¿£¬µ«ÊÇÔÚ´´½¨·þÎñÆ÷ʱ£¬ÎÒÃǵ÷ÓÃÁË connect().ÕâÓÐÊÇÈçºÎ¹¤×÷µÄ£¿
ÎÒÃÇÌí¼ÓÁËÒ»¸öÖмä¼þ£¬Êµ¼ÊÉϾÍÊÇÒ»¸öº¯Êý¡£´«Èë app.use £¬¼¸ºõºÍÉÏÃæÊ¹ÓÃrequest·½·¨Ð´·¨Ò»Ñù¡£Êµ¼ÊÉÏ´úÂëÊÇ´ÓÉÏÃæÕ³Ìù¹ýÀ´µÄ¡£
Ö®ºóÎÒÃǽ¨Á¢²¢†™¶¯·þÎñÆ÷¡£ http.createServer ½ÓÊÕº¯Êý×÷Ϊ²ÎÊý¡£Ã»´í£¬app ʵ¼ÊÉÏÒ²ÊÇÒ»¸öº¯Êý¡£ÕâÊÇÒ»¸öConnectÌṩµÄº¯Êý£¬Ëü»á²éÕÒ´úÂë²¢×ÔÉ϶øÏÂÖ´ÐС£
(Äã¿ÉÄܻῴ¼ûÆäËûÈËʹÓà app.listen(1337), Õâʵ¼ÊÉÏÖ»Êǽ« http.createServer
·µ»ØÒ»¸öpromise¶ÔÏó¡£ ÔÙConnectºÍExpressÖж¼ÊÇÒ»ÑùµÄÔÀí¡£)
½ÓÏÂÀ´½âÊÍʲôÊÇÖмä¼þ(middleware).
ʲôÊÇÖмä¼þ?
Ê×ÏÈÍÆ¼öÔĶÁStephen Sugden¶ÔÓÚConnectÖмä¼þµÄÃèÊö,±ÈÎÒ½²µÄ¸üºÃ¡£Èç¹ûÄ㲻ϲ»¶ÎҵĽâÊÍ£¬ÄǾÍÈ¥¿´¿´¡£
»¹¼ÇµÃ֮ǰµÄrequest·½·¨£¿Ã¿¸öÖмä¼þ¶¼ÊÇÒ»¸öhandler.ÒÀ´Î´«Èërequest, response,
nextÈý¸ö²ÎÊý¡£
Ò»¸ö×î»ù±¾µÄÖмä¼þ½á¹¹ÈçÏÂ:
function myFunMiddleware(request, response, next) { 2. // ¶ÔrequestºÍresponse×÷³öÏàÓ¦²Ù×÷ 3. // ²Ù×÷Íê±Ïºó·µ»Ønext()¼´¿ÉתÈëÏ‚€Öмä¼þ 4. next(); 5.}
|
µ±ÎÒÃdž™¶¯Ò»¸ö·þÎñÆ÷£¬º¯Êý¿ªÊ¼´Ó¶¥²¿Ò»Ö±ÍùÏÂÖ´ÐС£Èç¹ûÄãÏëÊä³öº¯ÊýµÄÖ´Ðйý³Ì£¬Ìí¼ÓһϴúÂë:
var connect = require("connect"); 2.var http = require("http"); 3.var app = connect(); 4. 5.// logÖмä¼þ 6.app.use(function(request, response, next) { 7. console.log("In comes a " + request.method + " to " + request.url); 8. next(); 9.}); 10. 11.// ·µ»Ø"hello world" 12.app.use(function(request, response, next) { 13. response.writeHead(200, { "Content-Type": "text/plain" }); 14. response.end("Hello World!\n"); 15.}); 16. 17.http.createServer(app).listen(1337);
|
Èç¹ûÄ㆙¶¯Ó¦Óò¢·ÃÎÊ localhost:1337£¬Äã»á¿´µ½·þÎñÆ÷¿ÉÒÔlog³öÏà¹ØÐÅÏ¢¡£
ÓÐÒ»µãÖµµÃ×¢Ò⣬ÈκοÉÒÔÔÚNode.jsÏÂÖ´ÐеĴúÂë¶¼¿ÉÒÔÔÚÖмä¼þÖ´ÐС£ÀýÈçÉÏÃæÎÒÃÇËùʹÓõÄreq.method
·½·¨¡£
Ä㵱Ȼ¿ÉÒÔ±àд×Ô¼ºµÄÖмä¼þ£¬µ«ÊÇÒ²²»Òª´í¹ýConnectµÄһЩºÜcoolµÄµÚÈý·½Öмä¼þ¡£ÏÂÃæÎÒÃÇÒÆ³ý×Ô¼ºµÄlogÖмä¼þ£¬Ê¹ÓÃConnectÄÚÖ÷½·¨¡£
var connect = require("connect"); 2.var http = require("http"); 3.var app = connect(); 4. 5.app.use(connect.logger()); 6.// Ò»‚€ÓÐȤµÄÊÂʵ£ºconnect.logger·µ»ØÒ»‚€º¯Êý 7. 8.app.use(function(request, response) { 9. response.writeHead(200, { "Content-Type": "text/plain" }); 10. response.end("Hello world!\n"); 11.}); 12. 13.http.createServer(app).listen(1337);
|
Ìø×ªÖÁä¯ÀÀÆ÷²¢·ÃÎÊ localhost:1337 Äã»áµÃµ½Í¬ÑùµÄ½á¹û¡£
ºÜ¿ìÓÐÈ˾ͻáÏëʹÓÃÉÏÃæµÄÖмä¼þ×éºÏÆðÀ´´´½¨Ò»¸öÍêÕûÓ¦ÓᣴúÂëÈçÏÂ:
var connect = require("connect"); 2.var http = require("http"); 3.var app = connect(); 4. 5.app.use(connect.logger()); 6. 7.// Homepage 8.app.use(function(request, response, next) { 9. if (request.url == "/") { 10. response.writeHead(200, { "Content-Type": "text/plain" }); 11. response.end("Welcome to the homepage!\n"); 12. // The middleware stops here. 13. } else { 14. next(); 15. } 16.}); 17. 18.// About page 19.app.use(function(request, response, next) { 20. if (request.url == "/about") { 21. response.writeHead(200, { "Content-Type": "text/plain" }); 22. response.end("Welcome to the about page!\n"); 23. // The middleware stops here. 24. } else { 25. next(); 26. } 27.}); 28. 29.// 404'd! 30.app.use(function(request, response) { 31. response.writeHead(404, { "Content-Type": "text/plain" }); 32. response.end("404 error!\n"); 33.}); 34. 35.http.createServer(app).listen(1337);
|
¡°Õâ¸ö¿´ÆðÀ´²»Ì«ºÃ¿´!ÎÒÒª×Ô¼ºÐ´¿ò¼Ü£¡¡±
ijЩÈË¿´ÁËConnectµÄ´úÂëÖ®ºó¾õµÃ£¬¡°Õâ¸ö´úÂë¿ÉÒÔ¸ü¼òµ¥¡±¡£ÓÚÊÇËûÃÇ´´ÔìÁËExpress.£¨ÊÂʵÉÏËûÃǺÃÏñÖ±½ÓµÁÓÃÁËSinatra.£©
×î¶¥²ã: Express
ÎÄÕ½øÈëµÚÈý²¿·Ö£¬ÎÒÃÇ¿ªÊ¼ÕæÕý½øÈëExpress.
ÕýÈçConnectÍØÕ¹ÁËNode, ExpressÍØÕ¹Connect.´úÂëµÄ¿ªÊ¼²¿·Ö¿´ÆðÀ´ºÍÔÚConnectÖзdz£ÀàËÆ£º
var express = require("express"); 2.var http = require("http"); 3.var app = express();
|
½áβ²¿·ÖÒ²Ò»Ñù:
1.http.createServer(app).listen(1337); |
Öм䲿·ÖÀuÊDz»Ò»ÑùµÄµØ·½¡£ConnectΪÎÒÃÇÌṩÁËÖмä¼þ£¬ExpressÔòΪÎÒÃÇÌṩÁËÁíÍâÈý¸öÓÅÐãµÄÌØÐÔ£º
·ÓÉ·Ö·¢£¬ÇëÇó´¦Àí£¬ÊÓͼäÖȾ¡£Ê×ÏÈ´ÓÈçÓпªÊ¼¿´¡£
ÌØÐÔÒ»£ºÂ·ÓÉ
·ÓɵŦÄܾÍÊÇ´¦Àí²»Í¬µÄÇëÇó¡£ÔÚÉÏÃæµÄºÜ¶àÀý×ÓÖУ¬ÎÒÃÇ·Ö±ðÓÐÊ×Ò³£¬¹ØÓÚºÍ404Ò³Ãæ¡£ÎÒÃÇÊÇͨ¹ý if
À´Åжϲ¢´¦Àí²»Í¬ÇëÇóµØÖ·¡£
µ«ÊÇExpressÈ´¿ÉÒÔ×öµÄ¸üºÃ¡£ExpressÌṩÁË¡±routing¡±Õâ¸ö¶«Î÷£¬Ò²¾ÍÊÇÎÒÃÇËù˵µÄ·ÓÉ¡£ÎÒ¾õµÃ¿É¶ÁÐÔÉõÖÁ±È´¿ÎÄ×Ö»¹ÒªºÃ¡£
var express = require("express"); 2.var http = require("http"); 3.var app = express(); 4. 5.app.all("*", function(request, response, next) { 6. response.writeHead(404, { "Content-Type": "text/plain" }); 7. next(); 8.}); 9. 10.app.get("/", function(request, response) { 11. response.end("Welcome to the homepage!"); 12.}); 13. 14.app.get("/about", function(request, response) { 15. response.end("Welcome to the about page!"); 16.}); 17. 18.app.get("*", function(request, response) { 19. response.end("404!"); 20.}); 21. 22.http.createServer(app).listen(1337);
|
¼òµ¥µÄÒýÈëÏà¹ØÄ£¿éÖ®ºó£¬ÎÒÃÇÁ¢¼´µ÷Óà app.all´¦ÀíËùÓÐÇëÇó¡£Ð´·¨¿´ÆðÀ´Ò²·Ç³£ÏñÖмä¼þ²»ÊÇÂð£¿
´úÂëÖÐµÄ app.get ¾ÍÊÇExpressÌṩµÄ·ÓÉϵͳ¡£Ò²¿ÉÒÔÊÇ app.post
À´´¦ÀíPOSTÇëÇ󣬻òÕßÊÇPUTºÍÈκεÄHTTPÇëÇó·½Ê½¡£µÚÒ»¸ö²ÎÊýÊÇ·¾¶£¬ÀýÈç /about »òÕß /¡£µÚ¶þ¸ö²ÎÊýÀàËÆÎÒÃÇ֮ǰËù¼û¹ýµÄÇëÇóhandler¡£ÒýÓÃExpessÎĵµµÄÄÚÈÝ:
ÕâЩÇëÇóhandlerºÍÖмä¼þÒ»Ñù£¬Î¨Ò»µÄÇø±ðÊÇÕâЩ»Øµ÷º¯Êý»áµ÷Óà next('route')
´Ó¶øÄܹ»¼ÌÐøÖ´ÐÐʣϵķÓɻص÷º¯Êý¡£ÕâÖÖ»úÖÆ
¼òµ¥ËµÀ´£¬ËüÃǺÍÎÒÃÇ֮ǰÌá¹ýµÄÖмä¼þÊÇÒ»Ñù£¬Ö»²»¹ýÊÇһЩº¯Êý¶øÒÑ¡£
ÕâЩ·ÓÉÒ²¿ÉÒÔ¸ü¼ÓÁé»î£¬¿´ÆðÀ´ÊÇÕâÑù£º
1.app.get("/hello/:who", function(req, res) { 2. res.end("Hello, " + req.params.who + "."); 3.});
|
ÖØÆô·þÎñÆ÷²¢ÔÚä¯ÀÀÆ÷·ÃÎÊ localhost:1337/hello/animelover69 Äã»áµÃµ½ÈçÏÂÐÅÏ¢£º
1.<code>Hello, animelover69. </code> |
ÕâЩÎĵµÑÝʾÁËÈçºÎʹÓÃÕýÔò±í´ïʽ£¬¿ÉÒÔʹµÃ·Óɸü¼ÓÁé»î¡£Èç¹ûÖ»Êǵ¥´Ó¸ÅÄîÀí½âÀ´½²£¬ÎÒ˵µÄÒѾ×ã¹»ÁË¡£
µ«ÊÇ»¹Óиü¼ÓÖµµÃÎÒÃÇÈ¥¹Ø×¢µÄ¡£
ÌØÐÔ¶þ£ºÇëÇó´¦Àí request handling
Express½«Äã´«ÈëÇëÇóµÄhandler´«ÈërequestºÍresponse¶ÔÏóÖС£ÔÏȸÃÓеϹÔÚ£¬µ«ÊÇÈ´¼ÓÈëÁ˸ü¶àеÄÌØÐÔ¡£APIÎĵµÀïÓÐÏêϸ½âÊÍ¡£ÏÂÃæÈÃÎÒÃÇÀ´¿´Ò»Ð©Àý×Ó¡£
ÆäÖÐÒ»¸ö¾ÍÊÇ redirect ·½·¨¡£´úÂëÈçÏ£º
1.response.redirect("/hello/anime"); 2.response.redirect("http://xvfeng.me"); 3.response.redirect(301, "http://xvfeng.me"); // HTTP 301״̬Âë
|
ÒÔÉÏ´úÂë¼È²»ÊôÓÚÔÉúNode´úÂëÒ²²»ÊÇÀ´×ÔÓëConnect,¶øÊÇExpressÖÐ×ÔÉíÌí¼ÓµÄ¡£Ëü¼ÓÈëÁËһЩÀýÈçsendFile£¬ÈÃÄã´«ÊäÕû¸öÎļþµÈ¹¦ÄÜ£º
1.response.sendFile("/path/to/anime.mp4"); |
request¶ÔÏó»¹ÓÐһЩºÜcoolµÄÊôÐÔ£¬ÀýÈç request.ip ¿ÉÒÔ»ñÈ¡IPµØÖ·, request.files
ÉÏ´«ÎļþµÈ¡£
ÀíÂÛÉÏÀ´½²£¬ÎÒÃÇÒªÖªµÀµÄ¶«Î÷Ò²²»ÊÇÌ«¶à£¬Express×öµÄÖ»ÊÇÍØÕ¹ÁËrequestºÍresponse¶ÔÏó¶øÒÑ¡£ExpressËùÌṩµÄ·½·¨£¬Çë²Î¿¼APIÎĵµ.
ÌØÐÔÈý£ºÊÓͼ
Express¿ÉÒÔäÖȾÊÓͼ¡£´úÂëÈçÏ£º
// Æô¶¯Express 2.var express = require("express"); 3.var app = express(); 4. 5.// ÔOÖÃviewÄ¿ä› 6.app.set("views", __dirname + "/views"); 7. 8.// ÔOÖÃÄ£°åÒýÇæ 9.app.set("view engine", "jade");
|
¿ªÍ·²¿·ÖµÄ´úÂëºÍÇ°Ãæ»ù±¾Ò»Ñù¡£Ö®ºóÎÒÃÇÖ¸¶¨ÊÓͼÎļþËùÔÚĿ¼¡£È»ºó¸æËßExpressÎÒÃÇҪʹÓà Jade×÷Ϊģ°åÒýÇæ¡£
JadeÊÇÒ»ÖÖÄ£°åÓïÑÔ¡£ÉԺ󽫻áÏêϸ½éÉÜ¡£
ÏÖÔÚÎÒÃÇÒѾÉèÖúÃÁËview.µ«ÊÇÈçºÎÀ´Ê¹ÓÃËüÄØ£¿
Ê×ÏÈÎÒÃǽ¨Á¢Ò»¸öÃûΪ index.jade µÄÎļþ²¢°ÑËü·ÅÈë views
Ŀ¼¡£´úÂëÈçÏ£º
1.doctype 5 2.html 3. body 4. h1 Hello, world! 5. p= message
|
´úÂëÖ»ÊÇÈ¥µôÁËÀ¨ºÅµÄHTML´úÂë¡£Èç¹ûÄã¶®HTMLÄǿ϶¨Ò²¿´µÃ¶®ÉÏÃæµÄ´úÂ롣ΨһÓÐȤµÄÊÇ×îºóÒ»Ñù¡£ message
ÊÇÒ»¸ö±äÁ¿¡£ËüÊÇ´ÓÄÄÀïÀ´µÄÄØ£¿ÂíÉϸæËßÄã¡£
ÎÒÃÇÐèÒª´ÓExpressÖÐäÖȾÕâ¸öÊÓͼ¡£´úÂëÈçÏ£º
1.app.get("/", function(request, response) { 2. response.render("index", { message: "I love anime" }); 3.});
|
ExpressΪ response ¶ÔÏóÌí¼ÓÁËÒ»¸ö render ·½·¨¡£Õâ¸ö·½·¨¿ÉÒÔ´¦ÀíºÜ¶àÊÂÇ飬µ«×îÖ÷ÒªµÄ»¹ÊǼÓÔØÄ£°åÒýÇæºÍ¶ÔÓ¦µÄÊÓͼÎļþ£¬Ö®ºóäÖȾ³ÉÆÕͨµÄHTMLÎĵµ£¬ÀýÈçÕâÀïµÄ
index.jade.
×îºóÒ»²½(ÎÒ¾õµÃ¿ÉÄÜËãÊǵÚÒ»²½)¾ÍÊǰ²×°Jade,ÒòΪËü±¾Éí²¢²»ÊÇExpressµÄÒ»²¿·Ö¡£Ìí¼ÓÖÁpackage.json
Îļþ²¢Ê¹Óà npm install ½øÐа²×°¡£
Èç¹ûÒ»ÆðÉèÖÃÍê±Ï£¬Äã»á¿´µ½Õâ¸öÒ³Ãæ¡£ÍêÕû´úÂë.
¼Ó·ÖÌØÐÔ£º ËùÓдúÂëÀ´×ÔÓÚConnectºÍNode
ÎÒÐèÒªÔÙ´ÎÌáÐÑÄãµÄÊÇExpress½¨Á¢ÓëConnectºÍNodeÖ®ÉÏ£¬ÕâÒâζ×ÅËùÓеÄConnectÖмä¼þ¾ù¿ÉÒÔÔÚExpressÖÐʹÓá£Õâ¸ö¶ÔÓ뿪·¢À´½²°ïÖúºÜ´ó¡£ÀýÈ磺
var express = require("express"); 2.var app = express(); 3. 4.app.use(express.logger()); // ¼Ì³Ð×ÔConnect 5. 6.app.get("/", function(req, res) { 7. res.send("fraser"); 8.}); 9. 10.app.listen(1337);
|
Èç¹û˵Äã´ÓÕâÆªÎÄÕÂÖÐѧµ½ÁËÒ»µãʲô£¬¾ÍÊÇÕâÒ»µã¡£
ʵս
±¾ÎĵĴ󲿷ÖÄÚÈݶ¼ÊÇÀíÂÛ£¬µ«ÊÇÏÂÃæÎÒ½«½ÌÄãÈçºÎʹÓÃËüÀ´×öÒ»µãÄãÏë×öµÄ¶«Î÷¡£ÎÒ²»Ïë˵µÄ¹ýÓÚ¾ßÌå¡£
Äã¿ÉÒÔ½«Express°²×°µ½ÏµÍ³È«¾Ö£¬´Ó¶ø¿ÉÒÔÔÚÃüÁîÐÐʹÓÃËü¡£Ëü¿ÉÒÔ°ïÖúÄãѸËÙµÄÍê³É´úÂë×éÖ¯²¢†™¶¯Ó¦Óá£Ê¹ÓÃnpm°²×°£º
<code># °²×°Ê±¿ÉÄÜÐèÒª¼Ó `sudo` npm install -g express
</code> |
Èç¹ûÄãÐèÒª°ïÖú£¬ÊäÈë express --help ¡£Ëü¼ÓÈëһЩ¿ÉÑ¡²ÎÊý¡£ÀýÈ磬Èç¹ûÄãÏëʹÓÃEJSÄ£°åÒýÇæ£¬LESS×÷ΪCSSÒýÇæ¡£Ó¦ÓõÄÃû³ÆÎª¡±myApp¡±.ÊäÈëÒÔÏÂÃüÁ
<code>express --ejs --css less myApp </code> |
ÕâÀï»á×Ô¶¯Éú³ÉºÜ¶àÎļþ¡£½øÈëÏîĿĿ¼£¬²¢Ê¹Óà npm install °²×°ÒÀÀµ°ü£¬Ö®ºó±ã¿ÉÒÔʹÓà node
app†™¶¯Ó¦Óã¡ÎÒ½¨ÒéÄãÏêϸµÄ²é¿´ÏîÄ¿½á¹¹ºÍ´úÂë¡£Ëü¿ÉÄÜ»¹Ëã²»ÉÏÒ»¸öÕæÕýµÄÓ¦Ó㬵«ÊÇÎÒ¾õµÃËü¶ÔÓÚ³õѧÕßÀ´½²»¹ÊǺÜÓаïÖúµÄ¡£
ÏîÄ¿GithubĿ¼ÏÂÒ²ÓÐһЩºÜÓаïÖúµÄÎĵµ¡£
һЩ²¹³ä
Èç¹ûÄãÒ²ºÍÎÒÒ»Ñùϲ»¶Ê¹ÓÃCoffeeScript£¬ºÃÏûÏ¢ÊÇExpressÍêÃÀÖ§³ÖCoffeeScript.ÄãÉõÖÁ²»ÐèÒª±àÒëËü¡£ÕâÑùÄãÖ»ÓÃ
coffee app.coffee ¼´¿É†™¶¯Ó¦Óá£ÎÒÔÚÎ񵀮äËûÏîÄ¿ÖÐÒ²ÊÇÕâô×öµÄ¡£
ÔÚÎÒ¿´µ½ app.use(app.router) µÄʱºòÎÒºÜÒÉ»ó£º Express²»ÊÇÒ»Ö±ÔÚʹÓÃrouterÂ𣿼òµ¥»Ø´ðÊÇapp.router
ÊÇExpressµÄ·ÓÉÖмä¼þ£¬ÔÚÄ㶨Òå·ÓɵÄʱºò±»Ö±½ÓÌí¼Óµ½ÏîÄ¿ÖС£Èç¹ûÄãÐèÒªÔÚ¼ÓÔØÆäËûÎļþ֮ǰӦÓã¬Ò²¿ÉÒÔÖ±½ÓÒýÈëËü¡£¹ØÓÚÕâô×öµÄÔÒò£¬Çë²Î¿¼StackOverflowµÄÕâ¸ö´ðèñ.
±¾ÎÄÊÇÕë¶ÔExpress 3£¬¶øÔÚµÚËİæµÄ¹æ»®ÖÐÓÖ»áÓкܶà´óµÄ¸Ä¶¯¡£×îÃ÷ÏÔµÄÊÇ£¬Experss¿ÉÄÜÒª½«»á·Ö½â³ÉһЩСµÄÄ£¿é£¬²¢ÎüÊÕConnectµÄÒ»Ð©ÌØÐÔ¡£Õâ¸öËäÈ»»¹Ôڼƻ®ÖУ¬µ«ÊÇÒ²ÖµµÃÒ»¿´¡£
Èç¹ûÕâ¸ö»¹²»ÄÜÂú×ãÄ㣿Äã¿Ï¶¨ÊǸö±ä̬£¡ÄãºÜ¿ì¾Í»á±ä³ÉÏñÒ»¸öñ«¾ý×Ó£¬°ëÕö×ÅÑÛ£¬ºÄ¾¡Äã×îºóÒ»µã¾«Á¦£¬Ð´×Å¿à±ÆµÄ´úÂë¡£
ÕýÈçRails³ÉΪʹÓÃRuby½¨Á¢ÍøÒ³Ó¦ÓõÄÍõÕßÒ»Ñù£¬ÎÒ¾õµÃExpressÒ²»á³ÉΪNodeÖеÄÖ÷Á÷¡£µ«ÊǺÍRails²»Ò»Ñù£¬Express
¸ü¼Óµ×²ã¡£Ëƺõ»¹Ã»ÓÐÒ»¸öÕæÕýÒâÒåÉϵĸ߼¶Node¿â¡£ÎÒ¾õµÃ¿ÉÄܻᷢÉú¸Ä±ä¡££¨ÒëÕß×¢£ºÕâµãÎÒ²»Í¬Ò⣬NodeµÄºÜ¶à˼ÏëÀ´×ÔÓëUnixÕÜѧ£¬Ç¿µ÷µÄÊÇÒ»¸öModuleÖ»½â¾öÒ»¸öÎÊÌ⣬¶ø²»ÊdzÉΪһ¸öÑ}ÔӵĿ⡣ºÜ¶àRailsµÄ¿ª·¢ÕßתÏòNode£¬¾ÍÊÇÒòΪRailsÕýÔÚÖð½¥±äµÃÓ·Ö×£¬²»Ò××Ô¶¨Ò壬ÇÒЧÂÊÖð½¥½µµÍ¡££©¡£
ÕâÀïÎҾͲ»ÔÙ¶à̸¡£ÒѾÓֺܶàºÜ»ùÓÚExpress½¨Á¢ÁËÐµĶ«Î÷£¬ExpessµÄά»ùÀïÓÐÁо١£Èç¹ûÄã¾õµÃºÃ¿ÉÒÔËæÒâʹÓÃËüÃÇ£¬Èç¹ûÄãϲ»¶´Óµ×²ã×öÆð£¬ÄãÒ²¿ÉÒÔֻѡÔñExpress¡£²»¹ÜÊÇÄÄÒ»ÖÖ£¬ºÃºÃÀûÓÃËü°É¡£
|