原生 node 服務器html
1. 導入 node.js 核心模塊 / 自帶模塊 : httpnode
const http = require('http'); // HTTP 庫所具備的功能已經賦給了 http 對象
const querystring = require('querystring'); // 查詢字符串
2. 經過 http 模塊 的方法建立服務器express
Node 自己就是 Web 服務器npm
// 調用 HTTP 模塊的一個工廠模式方法 http.createServer() 來建立新的 HTTP 服務器瀏覽器
// 每當一個新的訪問請求到達 Web 服務器,它都將調用咱們指定的函數方法來處理服務器
// 新建立的 HTTP 服務器並無賦值給任何變量,它只會成爲存活在全局範圍內的匿名對象
// 傳了一個匿名函數做爲參數。此函數綁定在新建立服務器的事件監聽器上,進行 request 事件處理app
const server = http.createServer(function (request, response) { // response.writeHead(200, {'Content-Type': 'text/plain'});
response.setHeader('Content-Type', 'text/html;charset:utf-8'); console.log(request.url); const url = request.url; // const query = url.split('?')[1].split('&')[0]; // username=Ryen
const query = url.split('?')[1] // username=Ryen&password=123456
querystring.parse(query); // {"username": 'Ryen', "password": '123456'}
// end 方法將會關閉 HTTP 鏈接。但由於咱們同時還傳入了一個字符串
response.end('Hello World\n'); // end 方法將在把此內容發送給客戶端後才關閉鏈接
});
回調函數的參數 是兩個對象框架
// 一個是請求的對象 request函數
// 若是在瀏覽器輸入 http://127.0.0.1:8124?username=Ryen&password=123456'性能
// 瀏覽器 會發送個請求給 服務器
// 以 '?' 開頭的字符串,叫作 查詢字符串
// 裏面的每一個字段都是 key=value
// 多個字段以 & 鏈接
// 一個是響應的對象 response // 調用了 response 對象的幾個方法,這將修改響應結果
// 必須調用 response.writeHead() 或者 response.setHeader() 來設置 HTTP 響應頭
// 設置狀態代碼爲 200(表示 HTTP 狀態代碼「200 OK」),而且傳入一段 HTTP 頭描述
3. 監聽端口號,啓動服務器
server.listen(8124, "127.0.0.1"); // 初始化啓動服務器,並告訴它監聽在 8124 端口
console.log('Server running at http://127.0.0.1:8124/'); // 將在標準輸出 stdout 上打印信息
node.js + express 服務器(進公司通常都是結合框架)
npm init
"name": hello_node_server
npm install express
1. 導入 express 模塊
const express = require('express');
2. 建立 app 應用對象
const app = express();
3. 寫業務邏輯:處理請求,返回響應
app.get('/', (request, response)=>{ console.log(request.query); response.send('Hello Node Express!'); });
4. 監聽端口號:一個端口號 有且只能運行 一個程序
app.listen(3000, err=>console.log(err?err:'服務器啓動成功!'));
根據代碼實時顯示效果
Node.js 只有在第一次引用到某部份時纔會去解析腳本文件,之後都會直接訪問內存,避免重複載入,
而 PHP 則老是從新讀取並解析腳本(若是沒有專門的優化配置)。
Node.js的這種設計雖然有利於提升性能,卻不利於開發調試,
由於咱們在開發過程當中老是但願修改後當即看到效果,而不是每次都要終止進程並重啓