Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
ÉîÈëÀí½â Express.js
 
ÒëÕߣºÍøÃû»¹Ã»ÏëºÃ À´Ô´£º²©¿ÍÔ° ·¢²¼ÓÚ 2015-03-25
  2170  次浏览      27
 

±¾ÎÄÕë¶ÔÄÇЩ¶Ô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¡£²»¹ÜÊÇÄÄÒ»ÖÖ£¬ºÃºÃÀûÓÃËü°É¡£

   
2170 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕ Ïà¹ØÎĵµ Ïà¹Ø¿Î³Ì



Éî¶È½âÎö£ºÇåÀíÀôúÂë
ÈçºÎ±àд³öÓµ±§±ä»¯µÄ´úÂë
ÖØ¹¹-ʹ´úÂë¸ü¼ò½àÓÅÃÀ
ÍŶÓÏîÄ¿¿ª·¢"±àÂë¹æ·¶"ϵÁÐÎÄÕÂ
ÖØ¹¹-¸ÄÉÆ¼ÈÓдúÂëµÄÉè¼Æ
Èí¼þÖØ¹¹v2
´úÂëÕû½àÖ®µÀ
¸ßÖÊÁ¿±à³Ì¹æ·¶
»ùÓÚHTML5¿Í»§¶Ë¡¢Web¶ËµÄÓ¦Óÿª·¢
HTML 5+CSS ¿ª·¢
ǶÈëʽC¸ßÖÊÁ¿±à³Ì
C++¸ß¼¶±à³Ì
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

AndroidÊÖ»ú¿ª·¢£¨Ò»£©
Àí½âJavascript
·ÇµäÐÍajaxʵ¼ù
³¹µ×µÄAjax
javascript ʹÓÃCookies
ʹÓà jQuery ¼ò»¯ Ajax ¿ª·¢


Struts+Spring+Hibernate
»ùÓÚJ2EEµÄWeb 2.0Ó¦Óÿª·¢
J2EEÉè¼ÆÄ£Ê½ºÍÐÔÄܵ÷ÓÅ
Java EE 5ÆóÒµ¼¶¼Ü¹¹Éè¼Æ
Javaµ¥Ôª²âÊÔ·½·¨Óë¼¼Êõ
Java±à³Ì·½·¨Óë¼¼Êõ


ijº½¿Õ¹«Ë¾IT²¿ JavaScriptʵ¼ù
ijµçÊÓÈí¼þ HTML5ºÍJavaScript
Öк½ÐÅ JavaScript¸ß¼¶Ó¦Óÿª·¢
´óÇìÓÍÌï web½çÃæAjax¿ª·¢¼¼Êõ
ºÍÀûʱ ʹÓÃAJAX½øÐÐWEBÓ¦Óÿª·¢