建立Node.js server
Before create server :
- 1 ) what is server and client , and how to contact ? and finality respone to” client of browser “ Websit
2) what is Moduel ?
3) Require function How to Use ?
建立前, 首先要先暸解 server 和 client 如何聯絡?
最後回應到客戶端的瀏覽器.
後續的練習網址會輸入localhost :3000
因為www.google.com 是表示我client 要到 www.google.com的server
www.google.com 本身是一個IP位置.[ 8.8.8.8 ]
localhost 你想像他也是一個IP位置 [ 127.0.0.1 ]
3000 :
當我們開啟一個PID [ process ID ] 需要一個相對應的聯絡服務用的通訊編號稱或連接阜稱為[ port ], 除了少部分是固定給自己電腦本機使用的, 大部分都能編.
通訊埠(英語:port),又稱為 連接埠、端口、協定埠(protocol port)
在TCP協定中,埠號0是被保留的,不可使用。
1–1023 系统保留,只能由root用户使用。
1024 — -4999 由客户端程序自由分配。
5000 — -65535 由服务器端程序自由分配在UDP協定中,來源埠號是可以選擇要不要填上,如果設為0,則代表沒有來源埠號。
Modules 模組
白話文解釋就是/ 我要某個功能/ 已經包在裡面.
在Node.js 裡面的Modules已有了:各種可以設定網路需要的工具.
require(“http”)
Hey ! Node ! 我需要( http )網路功能. (๑•̀ㅂ•́)و
Node.js 呼叫 Modules 透過 require ()
require () 是Node.js 常用, require 像是 call function . .requiere 基本用法
參考作者資料: 阮一峰
Node 透過 require(X) ,會按下面的方式處理。
(1)如果 X 是内置Modules(比如 require(‘http’))
返回moduless 或 找到後不再執行
(2)如果 X 以 “ ./ ” 或者 “/” 或者 “../”
根據 X 所在的父module,確定 X 的絕對路徑。
將X當成文件,依序查找下面文件,只要其中有一個存在,就RES該件,不再執行。
将 X當成目錄,依次查找下面文件,只要其中有一个存在,就reture该文件,不再執行。
(3)如果 X 不帶路徑(path )
根據X 所在的父Module,確定 X 可能的安裝目錄。
依次在每个目录中,将 X 當成文件名或目錄名加載。
(4) 抛出 “not found”
//下一篇章會在更詳細, 實作require ()的功能
The next chapter will be in more detail,
actually doing the function of require (). ^_^
建立 Node.js 本機伺服器
Create Node.js local server ….
現在就讓我們用 Node.js 來建立一個簡單的伺服器吧!我們繼續用上一單元建立好的 index.js
來撰寫,然後在這份 JavaScript 裡加上以下六個設定步驟:
所有的變數用 const 確保定義的變數不是‘全域 Globally ‘
1. 載入 Node.js HTTP 模組
Loading Node.js Http Module
const http =require ( ’http ’)
2. 定義和伺服器有關的變數
Define with server have relate of variables
const hostname = ‘localhost’const port = 3000
首先我們可以使用 HTTP 模組中的 createServer
建立伺服器。
可以透過剛才設定的 http
這個變數來使用 HTTP 模組中的方法:
const server = http . createserver( )
建立好相關的變數後,就可以開始來設定這個伺服器會如何:
1)處理瀏覽器發進來的請求 (request)
2)根據請求給予回應 (response)
const server = http.createserver( (req , res)=>{ x } )
當瀏覽器向伺服器請求時, createserver ( ) 內帶入的函數將會被執行.
3. 設定回應的 HTTP 狀態碼
(Status code) / setting respone of Http status
const server = http . createserver ( (req ,res )=>{ res.statusCode = 200 }//200 ok
4. 設定回應的內容類型為何?
(Content-Type) / setting respone of content Of type
給予request 和 respone 設定內容
res
參數則可以設定我們要給予瀏覽器的回應為何。
res
.setHeader ( ) / 在HttpServletResponse 物件上的 setHeader()標頭
Html 文件(text/html) 、純文字檔(text/plain) 、PDF 檔 (application/pdf) 、影片檔 (video/mpeg4) 、或者是經常用來傳送資料的 JSON 檔(application/json) 。
const server = http.createserver ( ( req , res ) => {statuscode = 200
res.setHeader(‘ content-Type ‘,‘text/html ‘ ) //設定回應內容和文字類型 })
5. 把回應的訊息傳送給瀏覽器.
respone/ Sent a response of Text to Browser
透過 res.end()
可以把想要給瀏覽器的回應寫在這裡,例如可以先簡單的回應「Create your node server 」:
const server = http.createserver ( ( req , res ) => {statuscode = 200
res.setHeader(‘ content-Type ‘,‘text/html ‘ ) //設定回應內容的類型res.end ( ` create your node server ` ) //設定回應的內容})
6. 啟動並監聽伺服器 / Starts Run and listen Server.
server.listen( port , hostname ,( )=>{
console.log( ‘`the servrer listening on ${hostname} :${port}`)匿名函數 ()=>
執行檔案
透過Node server 連結到Browser :
open you terminial >>$ node index.js
瀏覽器打開Node.js
Open your Node.sj from Browser
on your Browser address bar : localhost:3000 << Before first to setting Define Variable , If you forget jsut review back >
回應的訊息可以置入HTML :
Html of script also could be into res.end ( ``) .
res.end ( ` into your html of content ) ,
as like chart , than restart your server.