node是一門技術,並非一門新的語言。是JavaScript運行環境。javascript
node在解析JavaScript,依靠的是什麼?css
依靠的是谷歌瀏覽器中的v8引擎,因此不須要考慮兼容性,node由於是直接用v8引擎去解析,因此沒有window對象html
2、那麼Node.js與JavaScript的區別是什麼?
本質:前端
Javascript是一種web前端語言,主要用於web開發中,由瀏覽器解析執行 java
Node.js是一個能夠快速構建網絡服務及應用的平臺,是用Javascript語言構建的服務平臺,可用於後端創建服務器node
區別: web
Javascript 主要應用前端 是編程語言 客戶端編程語言(須要瀏覽器的javascript解釋器進行解釋執行) 編程
node.js 主要應用後端 1個平臺 運行環境(一個基於Chrome JavaScript運行時創建的平臺,它是對Google V8引擎進行了封裝的運行環境)簡單的說node.js就是把瀏覽器的解釋器封裝起來做爲服務器運行平臺,用相似javascript的結構語法進行編程,在node.js上運行。後端
3、那麼node.js有什麼優勢和缺點呢?
優勢:數組
1.事件驅動
2.異步編程
3.非阻塞模式的IO
4.輕量高效
缺點:
1.可靠性低
2.單進程,單線程,只支持單核cpu,不能充分的利用多核cpu服務器。一旦這個進程崩掉,那麼整個web服務就崩掉了。
4、node.js的語法
node.js的語法就是JavaScript的語法,基本語法與 javascript 同樣,這裏咱們使用exports導出一個函數,而後再另外一文件中經過require導入入一個模塊例如 :
在 a.js 中寫一個函數var hello=function(){ console.log('hello')}export.hello=hello;
在 b.js 中 須要用hello這個函數var a=require('a');a.hello()
什麼是模塊化?
把代碼所有拆分紅模塊,主要是方便管理和維護,一個文件就是一個模塊。
在node中,有一些內置的模塊(包),經過require函數引入:
fs 文件系統
http 建立服務
path 路徑
querystring 參數模塊
url 地址欄
固然也能夠自定義模塊
固然,node.js還有不少內置的方法,如比較經常使用的有讀文件、寫入文件等等。
node.js的經常使用方法
引入模塊:var fs = require('fs')
fs模塊的經常使用方法:
/ fs.writeFile(file,str,'utf8',function(err){ //若是寫入成功,這個err爲null // if(err){ // throw err; //若是錯誤,將錯誤拋出 // } // // 若是文件不存在,會幫你去建立對應的文件,可是不會建立文件夾 // }) // 同步寫文件 // fs.writeFileSync(file, data[, options]) // 異步的追加文件 // fs.appendFile(path, data[, options], callback) // 同步的追加文件 // fs.appendFileSync(path, data[, options]) // 異步的建立文件夾 // fs.mkdir(path,function(err){ // console.log(err); //node會報錯,可是錯誤都不會拋出,不會影響後續代碼的執行 // }) // 同步的建立文件夾 // fs.mkdirSync(path[, options]) // 異步讀文件夾 // fs.readdir(path[, options], callback) //裏面的文件以數組的形式表示出來,進行判斷,判斷是不是文件夾 // 若是是文件夾,繼續讀文件夾,若是是文件,直接讀文件,而後展現 // 同步的讀文件夾 // fs.readdirSync(path[, options]) // 異步判斷文件或者文件夾是否存在 // fs.access(path[, mode], callback) 可否判斷文件夾是否存在 // fs.access("./data",function(err){ //這個方法是能夠判斷文件和文件夾是否存在 // console.log(err); // console.log('OK'); // }) // 同步判斷文件或者文件夾是否存在 // fs.accessSync(path[, mode]) //同步讀文件 fs.readFile(file,'utf8',function(err,data){ response.end(data); }) //異步讀文件 fs.readFilesync(file,'utf8',function(err,data){ response.end(data); })
5、服務器的搭建
var http = require("http"); //引入http的模塊,用來提供服務 var server = http.createServer(); //建立一個服務器 //server監聽request事件,callback server.on('request',function(request,response){ //設置請求頭 response.writeHead(200,{"Content-Type" : "text/html;charset=utf8"}); // 注意:圖片,script,css,文本,html都要與之對應 // response.write("<h1>hello world</h1>"); // // 輸出對應的中文的時候,要有對應的格式和對應的編碼 // response.end("<h2>hello world</h2>"); //結束,結束必須有,否則表示這個請求和響應沒有完成 //接口 if(request.url == "/login.html" && request.method == "GET"){ response.end("這個是登陸界面") }else if(request.url == "/register" && request.method == "GET"){ response.end("這個是註冊界面") } else if(request.url == "/login" && request.method == "POST"){ response.end("登陸成功") } else { response.end("404"); } }); // 服務搭建完成,監聽端口 server.listen(8888); //ctrl+c 中止
簡略版(基本硬式步驟)
var http = require("http"); var server = http.createServer(); server.on("request",function(request,response){ }) server.listen(8888);