node.js Server


title: node.js Server
date: 2018-03-14 00.00.00
tags: Server client 請求 響應(yīng)


腳本建Server

用什么腳本建服務(wù)器

  • 用腳本就可以提供 HTTP 服務(wù),不管是 Bash 腳本還是 Node.js 腳本都可以。
  • 由于 Bash 腳本的語法實(shí)在是反人類,而且我們今后要學(xué)習(xí) JavaScript,所以我們先用 Node.js 腳本試試水吧。
  • 建成的服務(wù)器就是我們的電腦,沒錢買服務(wù)器,窮逼的我們就用電腦做服務(wù)器實(shí)驗(yàn)吧,哈哈哈

創(chuàng)建node.js Server腳本

  • 用bush命令操作,進(jìn)個自己認(rèn)為安全好用的目錄
  • 創(chuàng)建文件 touch server.js ,將以下內(nèi)容加入:

var http = require('http')
var fs = require('fs')
var url = require('url')
var port = process.argv[2]

if(!port){
  console.log('請指定端口號好不啦?\nnode server.js 8888 這樣不會嗎?')
  process.exit(1)
}

var server = http.createServer(function(request, response){
  var parsedUrl = url.parse(request.url, true)
  var path = request.url 
  var query = ''
  if(path.indexOf('?') >= 0){ query = path.substring(path.indexOf('?')) }
  var pathNoQuery = parsedUrl.pathname
  var queryObject = parsedUrl.query
  var method = request.method

  /******** 從這里開始看,上面不要看 ************/

  console.log('HTTP 路徑為\n' + path)
  if(path == '/style.css'){
    response.setHeader('Content-Type', 'text/css; charset=utf-8')
    response.write('body{background-color: #ddd;}h1{color: red;}p{color: green;}')
    response.end()
  }else if(path == '/main.js'){
    response.setHeader('Content-Type', 'text/javascript; charset=utf-8')
    response.write('alert("這是JS執(zhí)行的")')
    response.end()
  }else if(path == '/'){
    response.setHeader('Content-Type', 'text/html; charset=utf-8')
    response.write('<!DOCTYPE>\n<html>'  + 
      '<head><link rel="stylesheet" href="/style.css">' +
      '</head><body>'  +
      '<h1>你好</h1>' +
      '<p>這里是你訪問到的內(nèi)容,字體的顏色為你訪問到的css添加</p>'+
      '<script src="/main.js"></script>' +
      '</body></html>')
    response.end()
  }else{
    response.statusCode = 404
    response.end()
  }

  /******** 代碼結(jié)束,下面不要看 ************/
})

server.listen(port)
console.log('監(jiān)聽 ' + port + ' 成功\n請用在空中轉(zhuǎn)體720度然后用電飯煲打開 http://localhost:' + port)

  • 運(yùn)行 node server.js ,如果開始創(chuàng)建文件沒有加后綴就運(yùn)行 node server ,會看到報(bào)錯
    image

    沒有監(jiān)聽端口那我們就 node server 8888
  • 成功之后,這個 server 會保持運(yùn)行(相當(dāng)于服務(wù)器開始運(yùn)行了,可以接受請求了),無法退出
    • 如果你想「中斷」這個 server,按 <kb>Ctrl</kbd> + <kbd>C</kbd> 即可(C 就是 Cancel 的意思)
    • 中斷后你才能輸入其他命令
    • 我建議你把這個 server 放在那里別動,新開一個 Bash 窗口,完成下面的教程

服務(wù)器當(dāng)前的功能

  1. 這個服務(wù)器目前只有一個功能,那就是打印出路徑
  2. 缺少一個重要的功能,那就是發(fā)出 HTTP 響應(yīng)

發(fā)送請求

  • 使用bush 或者 瀏覽器 向我們這個服務(wù)器發(fā)起請求 ,那么服務(wù)器的地址是什么?

服務(wù)器的地址當(dāng)然就是我們的本地地址啦 ,http://127.0.0.1 或者 http://localhost 發(fā)起訪問: 報(bào)錯

image

  • 我們還是忘記了,http 訪問 必須 IP + 端口號 ,所以,我們重新訪問 http://127.0.0.1:8888
    image

服務(wù)器響應(yīng)

可以看到服務(wù)器響應(yīng)給我們了一個頁面, 有HTML內(nèi)容的顯示,css樣式的加持,JS動態(tài)的彈窗

  • 同時 服務(wù)器打印出請求的路徑
    image

我們需要知道的

response.setHeader('Content-Type', 'text/css; charset=utf-8')  //設(shè)置響應(yīng)內(nèi)容的類型,以及響應(yīng)內(nèi)容的編碼方式,返回                                                                  //css文件 
response.setHeader('Content-Type', 'text/javascript; charset=utf-8') //返回js文件
response.setHeader('Content-Type', 'text/html; charset=utf-8')     //返回html文件
 response.statusCode = 404                   //返回狀態(tài)碼
response.write('Hi')          //響應(yīng)內(nèi)容
response.end()             //響應(yīng)結(jié)束
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,568評論 19 139
  • HTTP 協(xié)議的底層其實(shí)是由 TCP 協(xié)議和 IP 協(xié)議(簡稱 TCP/IP)構(gòu)建的。 TCP 傳輸控制協(xié)議(Tr...
    饑人谷_mondee閱讀 352評論 0 0
  • Node.js是目前非常火熱的技術(shù),但是它的誕生經(jīng)歷卻很奇特。 眾所周知,在Netscape設(shè)計(jì)出JavaScri...
    Myselfyan閱讀 4,203評論 2 58
  • 剛上完體育課,同學(xué)們氣喘吁吁的回到教室。等待著顧老師上品德與社會??墒牵险n鈴一響,顧老師卻說:“這節(jié)課...
    洪子濤閱讀 208評論 0 0
  • 生活,就像一張A4 永遠(yuǎn)都被寫寫畫畫擦擦 選擇了鉛筆,可以肆無忌憚 選擇了鋼筆,注定要規(guī)規(guī)矩矩 如同選擇了短裙,就...
    嗚啦啦嗚啦閱讀 224評論 0 0

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