Express初體驗

學習了node的人都知道,在node中有一個模塊能夠用於建立網絡應用的HTTP模塊,利用http模塊就能夠建立一個簡單的服務器。 node

http.createServer這裏是一個回調函數,裏面有兩個參數。一個是 requestresponse,使用 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
複製代碼

而後開始安裝expressjson

npm i express
複製代碼

如今再文件夾下新建一個文件 index.js,編寫代碼
app的對象有不少的方法,正如上面所列舉的這些方法。這和 http模塊中的方法是同樣的做用。

一般get用於請求數據、post用於發送數據、put用於更新數據、delete用於刪除數據。這裏就是對服務器上的數據進行增、刪、改、查。api

這裏咱們根據須要使用get方法開始,實現一個對應httpget請求的終端。get方法有兩個參數,第一個參數是路徑。第二個參數是一個回調函數,這個函數在對給定端口使用get方法時被調用。這個回調函數有兩個參數,分別是requestresponse,而後是函數體的代碼塊。瀏覽器

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的值。若是有值就使用現有值,不然就使用在開發機器上設置好的端口。

複製代碼
相關文章
相關標籤/搜索