1. 程式人生 > >Node.js基礎學習筆記(1)

Node.js基礎學習筆記(1)

Node.js安裝

安裝教程可參考菜鳥教程的文件,連結如下:
https://www.runoob.com/nodejs/nodejs-install-setup.html

Node.js基礎-搭起一個web伺服器

在電腦上建立專案資料夾,並建立一個server.js檔案,例子來源於官網nodejs.org

通過“win+R”,輸入cmd開啟命令列,定位到所在的專案路徑,可以看到有日誌資訊打印出來:

在瀏覽器端訪問這個http,可以看到有hello World打印出來:

這樣,通過簡單的幾行程式碼一個簡單的web伺服器就搭建好了。
對程式碼進行解釋:

var
http=require('http'); //載入一個http模組,這個模組是由JavaScript來編寫的, //它的主要職責時負責建立web伺服器及處理HTTP相關的任務等等
http.createServer(function(req,res){
    res.writeHead(200,{'Content-Type':'text/plain'});
    res.end('Hello World\n');
}).listen(1337,'127.0.0.1');
//通過createServer來建立一個伺服器,通過listen讓伺服器在指定埠1337監聽請求,
//伺服器準備好了,就能收到任何來自埠的請求。
//當請求進來之後,我們需要告訴nodejs下一步需要做什麼, //通過一個匿名函式來執行相應的操作,它包含了兩個引數,一個請求體req和一個響應體res

當我們將res.end裡的資訊改變之後,需要重啟伺服器在瀏覽器端才會資訊更新。
通過createServer建立的伺服器,我們可以定義一個變數來接受,然後通過這個變數去呼叫相關操作

這種寫法所呈現的效果是一樣的。

Node.js的模組與Commonjs規範

在Javascript裡面,通過var或者function可以定義一個全域性訪問的變數或函式,但當批量的js檔案引入同一個頁面時,很容易出現變數被覆蓋、方法被重寫的情況,特別是當存在依賴關係時,很容易導致頁面出錯。Javascript缺少一種模組管理機制來隔離實現一些js片段。通常是採用名稱空間的方式,把變數和函式限定在某個特定的作用域內,人為約定一套命名規範來約束程式碼,從而保證程式碼的安全執行。
像jQuery就封裝了很多變數和方法,是直接訪問不到的,通常需要用$來呼叫,commonjs不同於jQuery,它是一套規範,包括了模組、包、系統、二進位制等等來約束js如何去組織和編寫程式碼,大部分標準也是在擬定和討論之中的。


首先是把這些執行不同任務的特定的程式碼塊或者程式碼檔案看作是一個獨立的模組,每個模組可以看作是一個獨立的作用域,但並不是孤立的,可能存在一定的依賴關係,每個模組都可以分為三個部分:模組的定義、標識和引用。

commonjs對很多開源產品產生了很大的推動作用,比如Nodejs、Couchdb,它們都是對這個規範的實現,雖不是百分百的實現,但它的反饋又反過來促進了commonjs規範的進一步優化,形成了一個良性迴圈。

Nodejs基於commonjs的理念,實現了自己的一套模組管理系統,它的每一個js檔案都可以看作一個獨立的模組,不需要又名稱空間,不用擔心變數和汙染和方法使用的隔離。這些獨立的模組或檔案通過彼此的依賴和引用,可以組合形成更強大完整的模組。

模組的分類

在Nodejs裡面,檔案和模組是一一對應的。模組有幾種不同型別,大概可以分為:核心模組、檔案模組和第三方模組。根據模組的型別,nodejs可以通過路徑、通過模組名引用,如果用名稱引用非核心模組,nodejs會把名稱對映到對應的模組的路徑,那些包含了核心函式的核心模組會在node啟動時被預先載入。非核心模組包括通過npm安裝的第三方模組以及自己或他人建立的本地模組。

簡單的Nodejs模組

模組的流程:

首先是建立模組,也就是一個入口的js檔案,裡面加入了一些特定的功能,匯出模組就是把這個功能和檔案也就是模組名建立關係,載入模組就是在其它檔案里加載這個模組,Nodejs是使用require來完成這個工作的,最後就是使用模組,直接呼叫模組中定義好的方法來做一些特定的邏輯處理,完成某種功能。

[未完待續。。。。。。]