學習了node
的人都知道,在node
中有一個模塊能夠用於建立網絡應用的HTTP
模塊,利用http
模塊就能夠建立一個簡單的服務器。 node
http.createServer
這裏是一個回調函數,裏面有兩個參數。一個是
request
,
response
,使用
request
對象外賣能夠檢查它的
url
屬性,使用它就能夠定義多個路由規則。
response
對象會對
request
的請求做出響應。
好比你的url
屬性是/api/courses
,那麼response
的響應內容就是反饋給用戶的。雖然這樣也能工做,可是並很差維護。隨着咱們爲應用定義愈來愈多的路由,咱們須要在這個回調中定義不少個if
代碼塊,因此這個時候就須要一個框架來解決這些問題。這個框架可以有個良好的結構,能夠在保持良好維護性的前提下建立不少路由規則。web
有不少的框架能夠在node
上建立web
服務器,最受歡迎的就是Express
。在npm
官網搜索express
能夠看到目前的最新版本是4.16.4
一週的下載量達到了七百多萬,足以說明這是個很是受歡迎的框架。 express
首先建立一個文件夾express-demo
,進入文件夾,使用npm init -y
命令來初始化文件夾。這樣咱們就有了一個package.json
文件npm
mkdir express-demo
cd express-demo
npm init -y
複製代碼
而後開始安裝express
json
npm i express
複製代碼
如今再文件夾下新建一個文件
index.js
,編寫代碼
app
的對象有不少的方法,正如上面所列舉的這些方法。這和
http
模塊中的方法是同樣的做用。
一般get
用於請求數據、post
用於發送數據、put
用於更新數據、delete
用於刪除數據。這裏就是對服務器上的數據進行增、刪、改、查。api
這裏咱們根據須要使用get
方法開始,實現一個對應http
的get
請求的終端。get
方法有兩個參數,第一個參數是路徑。第二個參數是一個回調函數,這個函數在對給定端口使用get
方法時被調用。這個回調函數有兩個參數,分別是request
,response
,而後是函數體的代碼塊。瀏覽器
request
參數給了咱們不少了解請求的屬性,須要瞭解的最好是去看Express
的文檔。這裏所使用到的屬性只是一點點。bash
response
會在接收到請求後進行響應。 服務器
app.listen
方法,給定端口號。固然咱們還能夠給它一個回調函數,在開始監聽的時候執行,這個是可選的。
在控制檯執行命令
node index.js
後提示咱們正在監聽3000端口,打開瀏覽器,訪問本地主機的3000端口能夠看到這裏就打印出了
Hello World
的字符串。
如今回到控制檯,
Ctrl+c
鍵強制退出,同時定義另外一個路由,仍是調用
get
方法。
在控制檯執行,而後在瀏覽器打開訪問
http://localhost:3000/api/courses
能夠看到獲得了數據。
回顧咱們前面的代碼,上面的請求實現,沒有那些if
代碼塊,而是調用get
方法來建立新的路由規則。由於這樣的結構,咱們的應用更簡潔,咱們能夠把路由規則移到另外一個文件去。例如咱們能夠將全部與課程有關的路由合併到一個單獨的文件course.js
,因此EXpress
將應用變得更有結構感。網絡
截止到如今每次咱們作出代碼修改都要重啓應用,這樣實在是過於麻煩。是否是有更好的方法讓咱們更加專一於應用的構建呢?
答案確定是有的,咱們安裝一個node
包叫nodeMon
,也就是node monitor
的縮寫。能夠在控制檯輸入命令全局安裝nodemon
。
npm i -g nodemon
複製代碼
有了它,咱們就不用node
來運行應用了,而是使用nodemon
來運行。
nodemon
會監測該文件夾全部的文件改動,任何文件名和擴展名。這樣咱們修改代碼就能夠看到控制檯裏,
nodemon
檢測到了更改並自動重啓應用,這樣就不用再手動重啓應用了。
回到瀏覽器刷新後也能夠看到變化了。
咱們知道端口號在啓動應用前就已經設置好了,那若是這個端口號已經被佔用的話那就太麻煩了,特別是在生產環境,優化的方法就是使用環境變量。基本上在
node
環境的共享平臺,環境變量中管理端口的屬性是
PORT
,環境變量就是在進程運行時才產生的變量。
在這個應用中,須要讀取環境變量PORT
屬性。這裏咱們有一個process
對象,這個對象有一個屬性env
,是環境變量的縮寫。而後加上所需的環境變量,這裏也就是PORT
。假如已經設置端口號咱們就用這個,默認仍是3000。保存到常量中。
//監聽端口號
let port = process.env.PORT || 3000;
app.listen(port, () => {
console.log(`正在監聽端口號:${port}`);
});
複製代碼
在mac
上可使用export
命令設置端口號,在window
上使用set
設置端口號。咱們在控制檯設置下,而後啓動應用看下。
set PORT=5000
複製代碼
這就是在
node
應用中正確設置端口號的方法,你須要先嚐試讀取環境變量
PORT
的值。若是有值就使用現有值,不然就使用在開發機器上設置好的端口。
複製代碼