node——解析express

參考視頻: understanding app.js (科學上網大法)

首先,新建一個node.js Express App,取個項目名叫megan,然后就自動生成了項目目錄。看看這個目錄的結構先。


Express項目組織目錄結構

依次講一下這個結構。

  1. 入口:bin/www是入口文件,創建一個服務器,默認監聽3000端口,并引入app.js,將它作為該服務器的回調函數。
  2. 當客戶端連接到服務器: 執行app.js里stack里這些注冊好的中間件——粗暴的講,就是服務器接收請求后,執行app, app去處理這個'/'的請求。
  3. app.js是怎么處理的呢,它發現有內部有對應該請求的響應(確實有,就是app.use('/', routes);注冊的呀),就根據注冊的這一條stack,去找到對應的routes目錄的地方執行里面的內容(index.js)
  4. 執行route,它里面的代碼到底是什么呢?是這樣的:拿到瀏覽器端頁面'/',寫該頁寫響應(給客戶端的響應),具體就是渲染模板, 向客戶端寫html代碼,根據view目錄下的模板渲染該html頁。

不妨看看route目錄下的index.js代碼

var express = require('express');
var router = express.Router();
/* GET home page. */
router.get('/', function(req, res, next) {  
res.render('index', { title: 'Express' });
});

module.exports = router;

短短幾行代碼很簡單,就是拿到客戶端頁面, 然后渲染html。補充一句,res.render('index', { title: 'Express' });第一個參數index是表示view/index.html,用來指定是哪一個html模板。
好了,這是express服務器和客戶端的通信部分,從連接到收到請求,到處理請求,渲染模板。那么,回到具體的項目本身,我們自己的代碼又放在哪里怎么寫呢?——Public目錄。

我們項目自己的樣式,js文件,和圖片都放在public目錄下的文件夾里。而html頁的模板,則放在view目錄下,客戶端對服務器的請求通信,服務器根據請求渲染頁面這件事,則是交給了route目錄,簡單說,我們構建項目的時候,要在app.js文件中使用app.use注冊好應對客戶端不同請求的中間件,即路由功能,起到分發作用,客戶端發送了一個請求,app.js回去內部找有沒有定義響應的中間件,有的話,就根據路徑交給路由,路由route的代碼里會去處理這個請求,比如像上面這段代碼這樣,渲染客戶端頁面。注意一件事,就是route目錄和views目錄,默認倆目錄里面的文件名字是對應的,也就是同名對應。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容