http服務
let server = http.createServer(function(req,res){
});
監聽:
server.listen(8080);
request 請求
response 相應
編輯器配置相應的環境
sublime:
依次打開 Tools --> Build System --> new Build System 中文:工具 --> 編譯系統 --> 新建編譯系統
輸入以下代碼,保存配置文件,然后 使用快捷鍵 Ctrl + b 開啟實時node監聽
{ "cmd": ["node", "$file"], "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)", "working_dir": "${project_path:${folder}}", "selector": "source.js", "shell": true, "encoding": "utf-8", "windows": { "cmd": ["node", "$file"] } }
atom 編輯器
下載對應插件 script
Ctrl + shift + b 實時監聽node指令
res.write(); 向前台輸出
res.end(); 結束輸出
req.url 請求的url 輸出 請求的url + favicon.ico
facicon.icon 是chrome自己請求的
<link rel= "shortcut icon" href="">
const http = require('http'); let server = http.createServer(function(request, response){ console.log(req.url); switch(req.url) { case '1.html': res.write('1111'); break; case '2.html': res.write('2222'); break; default: res.write('404'); break; }; console.log('被請求了'); // res.write(); res.end(); }); server.listen(9090);
http--模塊
文件操作 : fs模塊(系統自帶模塊) Files System
客戶端 ---- 服務器----磁盤----服務器----客戶端
異步 vs 同步
異步: 多個操作可以同時進行,前一次的操作每完成,后一次的操作也能開始
異步: 一次一個操作
讀文件:
// fs.readFile(文件名, 回調函數 function(err, data){});
fs.readFile();
data讀取結果
<buffer 原始的二進制數據 >
const fs = require('fs'); fs.readFile('1.txt', function(err, data){ if(err) { console.log('讀取失敗'); }else { console.log(data.toString()); } });
寫文件
// fs.writeFile(文件名, 內容, 回調函數 function(err){ });
fs.writeFile('1.txt', 'jason is a hero!', function(){
});
const fs = require('fs'); fs.writeFile('1.txt', 'jason is a hero!', function(err){ console.log(err); });
總結:
注意回調函數是異步函數,注釋的res.end();的位置是不對的,fs文件讀取結束后才能分析原因並且結束相應,而不應該在回調之前先結束相應再執行fs的回調
// 引入http模塊 const http = require('http'); // 引入fs模塊 const fs = require('fs'); // 創建一個連接 let server = http.createServer( (req, res) => { // 指定靜態資源 let file_name = './www' + req.url; fs.readFile(file_name, (err, data) => { if(err) { res.write('404'); } else { res.write(data); } res.end(); }); // res.end(); }); // 監聽端口 server.listen(9888);
