1. Node.js是什麼?javascript
簡單的說 Node.js 就是運行在服務端的 JavaScript。css
Node.js 是一個基於Chrome JavaScript 運行時創建的一個平臺。html
Node.js是一個事件驅動I/O服務端JavaScript環境,基於Google的V8引擎,所以不須要考慮兼容性的問題,V8引擎執行Javascript的速度很是快,性能很是好。java
Node.js是運行在服務端上的Javascript。node
Node的核心語言是javascript,並非一門新的語言,而是一門技術。數組
2. Node的模塊服務器
Node的模塊主要分爲兩類:宿主模塊和內置模塊。模塊的主要目的是爲了方便管理和維護。併發
宿主對象: window history異步
內置對象:math data regexp array string......函數
模塊的導入(require):
var http = require("http"); //導入http模塊 var fs = require("fs"); //導入文件系統模塊 var querystring = require("querystring"); //導入參數模塊 var url = require("url"); //導入地址模塊
3. 一個簡單的node.js
var http = require("http"); //引入http的模塊,用來提供服務 var fs = require("fs"); var server = http.createServer(); //建立一個服務器 //server監聽request事件,callback server.on('request',function(request,response){ response.writeHead(200,{"Content-Type" : "text/html;charset=utf8"});
res.end('Hello World\n');
}); // 服務搭建完成,監聽端口 server.listen(8888); console.log('服務運行在localhost:8888')
//ctrl+c 中止
4. 關於文件系統(fs)的一些經常使用的方法
在填寫路徑的時候必須加上"./"這是表示在當前目錄。
4.1 讀取文件 readFile(異步)和readFileSync(同步)。
// fs 文件系統的模塊 var fs = require("fs"); // console.log(fs); // 異步讀取文件 fs.readFile('./08.txt','utf8',function(err,data){ //若是編碼格式不寫,輸出的就是一串buffer碼 if(err){ throw err; //把錯誤拋出來,阻止代碼繼續日後面走 } console.log(data) }) // 同步 // var data = fs.readFileSync("./08.txt",'utf8') //同步讀完就是函數的返回值 // console.log(data)
4.2 判斷文件(文件夾)是否存在
fs.access('./08.txt',function(err){ //判斷文件是否存在 if(err){ throw err; } // 若是沒有拋出錯誤,文件存在 fs.readFile('./08.txt','utf8',function(err,data){ if(err) throw err; console.log(data); }) }) fs.access("./abc",function(err){ //判斷文件夾 if(err){ throw err; } console.log('hello') })
4.3 建立文件夾(同異步)
異步的建立文件夾 fs.mkdir("./data02",function(err){ console.log(err); //node會報錯,可是錯誤都不會拋出,不會影響後續代碼的執行 console.log('OK'); }) 同步的建立文件夾 fs.mkdirSync(path[, options])
4.4 讀文件夾(同異步)
fs.readdir("./data",function(err,data){ console.log(err); console.log(data); //裏面的文件以數組的形式表示出來,進行判斷,判斷是不是文件夾 // 若是是文件夾,繼續讀文件夾,若是是文件,直接讀文件,而後展現 }) 同步的讀文件夾 fs.readdirSync(path[, options])
5. 知識補充
什麼是i/o?
i:input
o:output
輸入和輸出, i/o 就是服務器的一個讀寫操做。
什麼是併發?
段時間內有多個程序在運行到運行完畢之間。
同步和異步有什麼區別
同步會阻塞 循環 script加載src。
異步不會阻塞代碼 定時器,link加載css,img加載src。
什麼是異步的IO?
要有數據的交互 異步的IO 讀文件。
沒有數據的交互 異步的非IO setTimeout setInterval。
線程與進程
一個程序至少須要一個進程,一個進程至少須要一個線程。