學(xué)習(xí)Node.js全椫绨椋框架MEAN-03-第一個(gè)Web服務(wù)

使用Node建立一個(gè)Web服務(wù)

新建一個(gè) server.js文件,輸入一下代碼:

var http = require('http');
http.createServer(function (req,res) {  
  //回調(diào)函數(shù)當(dāng)瀏覽器發(fā)出HTTP請求是被調(diào)用
  //response頭价涝,如果是html的話用 html/plain
   res.writeHead(200,{'Content-Type' :'text/plain'  });   
   res.write('Hello suck world');
  //結(jié)束
  res.end();
}).listen(3000);//監(jiān)聽3000端口

瀏覽器輸入http://localhost:3000 會(huì)顯示 hello world色瘩。

Connect 模塊

Connect模塊可以更好的支持服務(wù)端與客戶端的HTTP請求交互逸寓。

  • 一個(gè)模塊化的組件叫做middleware,可以將業(yè)務(wù)應(yīng)用注冊到特定的情景
  • 使用回調(diào)連接middleware
  • 一個(gè)Connect應(yīng)用使用 dispatcher 實(shí)例處理請求
  • Connect不是Core Module 所以需要導(dǎo)入 npm install connect
dispatcher

npm導(dǎo)入Connect模塊后泥栖,寫一個(gè)Connect sever:

var connect = require('connect');
var app = connect();
app.listen(3000);
console.log('Server is running at http://localhost:3000');

運(yùn)行勋篓,瀏覽器會(huì)顯示 Cannot GET/,因?yàn)闆]有middlewre處理GET HTTP請求耙蔑。

Connect middleware

middleware其實(shí)就是個(gè)有唯一簽名的function
定義一個(gè)middleware需要包含三個(gè)參數(shù):

  • req: 請求信息
  • res: 返回信息
  • next: 連接下一個(gè)middleware
    當(dāng)middleware定義好后甸陌,使用app.use( functionName )注冊到Connect應(yīng)用盐股。
var connect = require('connect');var app = connect();
var helloWorld = function (req,res,next) {   
  res.setHeader('Content-Type','text/plain');    
  res.end('Hello World');
};
  app.use(helloWorld);
  app.listen(3000);
  console.log('Server is running at http://localhost:3000');```

Connect 可以注冊無數(shù)個(gè)middleware,而這些middleware 可以通過next相互連接牲尺。
Connect執(zhí)行middleware的順序是先進(jìn)先出FIFO,直到?jīng)]有middleware可以執(zhí)行或者有一個(gè)middleware沒有這行next()方法谤碳。

var connect = require('connect');
var app = connect();

var logger = function (req,res,next) {
console.log(req.method,req.url);
next();
}

var helloWorld = function (req,res,next) {
res.setHeader('Content-Type','text/plain');
res.end('Hello World');
};
app.use(logger);
app.use(helloWorld);

app.listen(3000);

console.log('Server is running at http://localhost:3000');


### Mounting Connect middleware - 裝配

Mounting這個(gè)功能可以使Connect根據(jù)不同的請求path作出不同的相應(yīng)(類似路由)
具體方法是:在app.user( )方法加上路徑參數(shù)

var connect = require('connect');
var app = connect();

var logger = function (req,res,next) {
console.log(req.method,req.url);
next();//表示繼續(xù)執(zhí)行下一個(gè)md
}
var helloWorld = function (req,res,next) {
res.setHeader('Content-Type','text/plain');
res.end('Hello World');
//沒有next()不用連接其他md
};
var goodbyeWorld = function (req,res,next) {
res.setHeader('Content-Type','text/plain');
res.end('Goodbye World');
//沒有next()不用連接其他md
}

app.use(logger);
app.use('/hello',helloWorld);//設(shè)置路徑參數(shù)
app.use('/goodbye',goodbyeWorld);//設(shè)置路徑參數(shù)
app.listen(3000);
console.log('Server is running at http://localhost:3000');

以上代碼瀏覽器測試:
* http://localhost:3000/hello 輸出HelloWorld
* http://localhost:3000/goodbye 輸出Goodbye World

#### 總結(jié)
Connect 提供了更時(shí)髦的web服務(wù)端特性的支持蜒简,但是還是不很完善搓茬。在社區(qū)廣大開發(fā)者队他,特別是TJ Holowaychuk的共同努力下,出現(xiàn)了更完善的Web開發(fā)框架包Express锡凝,Express是基于Connect的垢啼。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末膊夹,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子工秩,更是在濱河造成了極大的恐慌进统,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,865評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件眉菱,死亡現(xiàn)場離奇詭異俭缓,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)华坦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,296評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來犁跪,“玉大人歹袁,你說我怎么就攤上這事》愣” “怎么了?”我有些...
    開封第一講書人閱讀 169,631評論 0 364
  • 文/不壞的土叔 我叫張陵嘉涌,是天一觀的道長仑最。 經(jīng)常有香客問我帆喇,道長坯钦,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,199評論 1 300
  • 正文 為了忘掉前任吟温,我火速辦了婚禮突颊,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘爬橡。我一直安慰自己,他們只是感情好糙申,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,196評論 6 398
  • 文/花漫 我一把揭開白布柜裸。 她就那樣靜靜地躺著,像睡著了一般疙挺。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,793評論 1 314
  • 那天海雪,我揣著相機(jī)與錄音奥裸,去河邊找鬼。 笑死樟氢,一個(gè)胖子當(dāng)著我的面吹牛侠鳄,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播伟恶,決...
    沈念sama閱讀 41,221評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼博秫,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了巴碗?” 一聲冷哼從身側(cè)響起即寒,我...
    開封第一講書人閱讀 40,174評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎明垢,沒想到半個(gè)月后市咽,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,699評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡溯革,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,770評論 3 343
  • 正文 我和宋清朗相戀三年致稀,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片萎攒。...
    茶點(diǎn)故事閱讀 40,918評論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡矛绘,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出货矮,到底是詐尸還是另有隱情,我是刑警寧澤喧锦,帶...
    沈念sama閱讀 36,573評論 5 351
  • 正文 年R本政府宣布抓督,位于F島的核電站,受9級特大地震影響供汛,放射性物質(zhì)發(fā)生泄漏涌穆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,255評論 3 336
  • 文/蒙蒙 一趁舀、第九天 我趴在偏房一處隱蔽的房頂上張望矮烹。 院中可真熱鬧罩锐,春花似錦、人聲如沸涩惑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,749評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽赊级。三九已至,卻和暖如春理逊,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背骑歹。 一陣腳步聲響...
    開封第一講書人閱讀 33,862評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留翘县,地道東北人谴分。 一個(gè)月前我還...
    沈念sama閱讀 49,364評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像忘伞,于是被迫代替她去往敵國和親沙兰。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,926評論 2 361

推薦閱讀更多精彩內(nèi)容