node.js—起一個web服務(wù)器

node.js概念:

簡單點說Nodejs就是運行在服務(wù)端的JavaScript。

  • node. js :雖然帶一個js后綴,但他實際上采用 Google Chrome瀏覽器,V8引擎,由c++語言編寫的,本質(zhì)上是一個JavaScript 的運行環(huán)境。速度非常快,性能非常好。
    往往提到j(luò)s,大家就會想到瀏覽器中各種:
    交互組件
    異步請求 等等
  • node.js不僅僅可以解析js代碼(并且也沒有瀏覽器端安全性的控制)。
    還提供許多系統(tǒng)級別的API:
    1、文件的讀寫
    2、進程的管理
    3、網(wǎng)絡(luò)通信 等等

話不多說,我們開始看一個很簡單的小程序,來了解一下在node里http請求的過程。

demo

/**
 * Created by wangqi on 16-12-10.
 */
var http = require('http');     //1
http.createServer(function(req, res) {      //2     //4      //5
    res.writeHead(200, {
        'Content-Type': 'text/plain'
    });
    res.end('Hello World\n');              //6
}).listen(2000, '127.0.0.1');         //3
console.log('快去瀏覽器輸入:127.0.0.1:2000');
const http = require('http');

const hostname = '127.0.0.1';
const port = 2000;

const server = http.createServer((req, res) = >{
    res.statusCode = 200;
    res.setHeader('Content-Type', 'text/plain');
    res.end('Hello World\n');
});

server.listen(port, hostname, () = >{
    console.log(`Server running at http: //${hostname}:${port}/`);
});

對比兩個程序,其實實現(xiàn)的結(jié)果都一樣。
結(jié)果:

結(jié)果圖
  1. http模塊由javascript編寫,職責(zé)是創(chuàng)建web服務(wù)器及處理http相關(guān)的任務(wù)等等。
  2. 通過createServer創(chuàng)建一個web服務(wù)器。
  3. 然后通過listen讓服務(wù)器在這個2000端口監(jiān)聽請求。服務(wù)器就已經(jīng)ready了,然后就能收到來自任何端口的請求了。
  4. 當請求進來的時候,我們得告訴node.js接下來要做什么,于是給createServer傳入了一個匿名的回調(diào)函數(shù)。
  5. 在監(jiān)聽到從2000端口過來的請求以后,node.js就會來調(diào)用這個回調(diào)函數(shù),同時給他傳入兩個參數(shù),分別是請求體(req)和響應(yīng)體(res)。
  • req:用來獲取這次請求的相關(guān)一些信息,比如這個請求是從哪個url地址過來的、請求的類型是get還是post。
  • res:用來告訴服務(wù)器給這個請求響應(yīng)一些內(nèi)容,要不然請求就會一直處于掛起的狀態(tài)。
  1. 最后就是給請求的客戶端返回一個Hello World,同時在返回的請求頭里面寫入返回的狀態(tài)碼是200,代表的是成功,設(shè)置返回的文本內(nèi)容是純文本。

注意:如果修改了輸出的內(nèi)容則必須重啟服務(wù)器,重新加載。在終端利用快捷鍵ctrl+c來中斷上次服務(wù)器。
給大家推薦幾個容易上手并學(xué)習(xí)nodejs的網(wǎng)站:

node官網(wǎng)查看nodejs的版本升級,新特性的加入,重要bug的修復(fù)等等,包括最近API的變化。
可搜索整合好的代碼,主要用于項目
技術(shù)問答社區(qū) 用它來解決技術(shù)的疑問,以及查詢相關(guān)的資源,特別是當環(huán)境配置出現(xiàn)了問題,跑服務(wù)的時候報了異常等等,這些都可以找到答案。

好了,就先寫到這兒,后面會會逐漸更新補充的~_~漬漬

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Node.js是目前非?;馃岬募夹g(shù),但是它的誕生經(jīng)歷卻很奇特。 眾所周知,在Netscape設(shè)計出JavaScri...
    w_zhuan閱讀 3,737評論 2 41
  • 個人入門學(xué)習(xí)用筆記、不過多作為參考依據(jù)。如有錯誤歡迎斧正 目錄 簡書好像不支持錨點、復(fù)制搜索(反正也是寫給我自己看...
    kirito_song閱讀 2,655評論 1 37
  • ## 前端開發(fā)的工具 ### 編輯器: 1. 輕量級的,依靠插件:sublime;atom(github);vs ...
    浪流兒閱讀 3,432評論 0 2
  • 總結(jié)一: [node.js總結(jié)](http://www.cnblogs.com/Darren_code/archi...
    xiumeiii閱讀 2,022評論 0 14
  • 小菜鋪第二個九十天踐行目標: 一、早睡早起; 二、每天十個韓語單詞; 三、每天跑步四公里。 【完成踐行目標情況】 ...
    小菜鋪閱讀 267評論 0 0

友情鏈接更多精彩內(nèi)容