2013-10-16 48 views
45

我最近已經進入了AngularJS,我喜歡它。對於即將到來的項目,我期待使用MEAN堆棧(MongoDB,Express,Angular,Node)。我對Angular非常熟悉,並且對堆棧中的MongoDB和Node的用途有一點了解。但是,我並不真正瞭解Express.js的目的是什麼。對於MEAN堆棧是否至關重要?你會將它與傳統的MySQL,PHP,JavaScript應用程序進行比較?它做了什麼,其他三個組件做不到?Express.js在MEAN堆棧中做什麼?

另外,如果有人想給自己取了如何在四個部分堆棧工作起來,那簡直太好了。

+3

使node.js工作變得更加簡單,創建路由,而不是。我推薦閱讀:http://evanhahn.com/understanding-express-js/ – tymeJV

+1

更新了Evan Hahn鏈接:http://evanhahn.com/understanding-express-3/(v3)和http:// evanhahn。 com/understanding-express /(v4) – kjhughes

回答

52
  • 的MongoDB =數據庫
  • Express.js =後端web框架
  • 角=前端框架
  • 節點=後端平臺/ web框架

基本上, Express所做的是通過提供一個更簡單的接口來創建請求端點,處理cookie等,而不是vanilla Node,從而使您可以輕鬆創建Web應用程序。你可以將它從等式中刪除,但是你必須在掀起你的web應用程序上做更多的工作。節點本身可以​​做一切表達的事情(表達是用節點實現的),但是表達只是將它包裝在一個更好的包中。

我會比較快在你所描述的棧的PHP Web框架,像slim

+0

對於MS堆棧是否公平地說節點<=> IIS Web託管服務器Express.js <=> ASP .Net和Angular <=> Javascript/HTML頁面/ MVC視圖和MongoDB <=> SQL Server。我有點困惑,因此詢問。我可以使用Nodejs編寫的代碼進行數據庫連接,就好像情況那樣,那麼NodeJs肯定不僅僅是像IIS這樣的虛擬主機平臺。在連接到DB獲取域模型信息的MEAN堆棧中。它是ExpressJS還是NodeJS? – RBT

4

快速處理之類的餅乾,解析請求主體,形成響應與處理的路線。

也就是監聽套接字來處理傳入的請求的應用程序的一部分。

一個簡單的例子,從express github

 
var express = require('express'); 
var app = express(); 

app.get('/', function(req, res){ 
    res.send('Hello World'); 
}); 
app.listen(3000); 

顯示Express服務器的創建,創建路由app.get('/'...並打開端口監聽傳入的HTTP請求。

15

您可以將Express視爲用於使用Node.js創建Web應用程序的實用工具帶。它提供了幾乎所有你需要做的構建Web服務器的功能。如果你要用vanilla Node.js編寫相同的功能,你將不得不編寫更多的代碼。這裏有什麼快速做了幾個例子:

  • REST路由像
    • app.get('/user/:id', function(req, res){ /* req.params('id') is avail */ });
  • 中間件系統,讓你在做不同的事情不同的同步功能,插上變得簡單的事情與請求或響應,即。驗證或添加屬性
    • app.use(function(req,res,next){ req.timestamp = new Date(); next(); });
  • 功能解析POST的身體要求
  • 跨站點腳本預防工具
  • 自動HTTP報頭處理
    • app.get('/', function(req,res){ res.json({object: 'something'}); });

一般來說,Sinatra對於Ruby來說就像Express對Node.js.我知道這不是一個PHP示例,但我不太瞭解PHP框架。

+2

Laravel是PHP。 http://laravel.com/ –