2015-12-06 41 views
5

爲了創建一個具有RESTful功能的Web應用程序,我已經閱讀並觀看了大量的文章和視頻,但我仍然無法完整了解它的工作原理。我應該選擇哪一個。其他答案是沒有幫助的「它取決於」。我把它歸結爲Django和Node之間的第一選擇。但是我沒有找到關於這些作品如何協同工作以及需要哪些模塊的整個「圖片」。因此,我試圖將所有內容都放在一個粗略的例子中。請注意,我是一個完整的新手。Django和Node - 它是如何工作的?

我使用會計模塊開發ERP應用程序。除了查看圖表,打印和存儲文檔外,基本上主要是關於CRUD。所以這是「它取決於」

我做出的唯一決定是使用nginx,Postgresql和Debian 8作爲工具/操作系統。這些是固定的明星。

我的問題是不是真正的共同的Django VS Node.js的,它不只是一個觀點我想:

  1. 下面是正確的圖片?任何意見?
  2. 是否還有其他組件需要使用?開始?

Node.js and Django structure

回答

16

你的問題進行很多 - 和StackOverflow上應該有一個疑問,可以在不產生大量的爭論或有意見而不是事實來回答。

因此,我認爲您的問題可能會被視爲「太寬泛」;但我認爲這是值得回答的。

我不打算說「這取決於」,儘管這真的是所有事情的歸結 - 但這裏是我試圖解釋它。

nodejs是一個運行時。這是一個可以讓你使用javascript在服務器上開發代碼的環境。爲了做任何有用的nodejs,超越「hello world」;你需要使用一個框架,並且周圍有很多這樣的框架,社區已經開發了各種堆棧來將所有組件捆綁在一起。這種堆棧的一個例子是MEAN,它是面向數據庫的MongoDB,面向框架的Express,面向前端的Angular以及面向全部運行的Node。

django是一個框架 - 它不是一個運行時。這意味着它從節點世界中移除了一步。 Django的運行時是Python。 django也不是像MEAN那樣的「堆棧」,你可以在它之上開發自己的堆棧 - 但由於django是一個「包含電池」的框架,你只需要添加一個數據庫 - 它包括你需要的一切。

REST只是設計Web服務的一種方式。它不是一種語言,或平臺或圖書館。它的一組規則描述了設計API的方式,以便它們利用HTTP的語義動詞。

您可以使用任何庫和編程語言來開發RESTful服務。你真正需要的是通過HTTP進行通信的兩個方面[b]一種序列化數據的方式,最好是使用JSON(但即使這不是要求)。

nginx只是一個非常快的網絡服務器和反向代理。它經常被提及的原因 - 是因爲靜態媒體服務的框架非常昂貴。所有對框架的請求(無論是在django世界還是在nodejs世界中)都必須通過一大組組件鏈來幫助解碼HTTP請求並創建一個易於開發人員使用的數據結構。這個組件鏈通常被稱爲中間件。由於每個請求都必須經過這個中間件,因此性能方面的原因更好,那些不需要應用程序「強大」執行的請求(如對圖像,樣式表,視頻文件的請求)會被執行由別的東西處理。這是nginx的用途,因爲它是一個非常快速的網絡服務器。


既然這些被解釋了,你需要看看什麼棧最適合你的應用。要做到這一點,您需要了解一些關於每個堆棧試圖解決的哲學/理由或問題。

對於django - 這很簡單。 Django由一個團隊在多家報紙上創建,以幫助他們管理在不同網站上發佈的內容。因此,它的設計使得內容管理成爲首要關注點。這就是爲什麼它有一個非常強大的管理控制檯作爲標準組件;和一個內置的相當健壯的ORM和它自己的模板引擎。 Django讓你知道如何最好地實際運行和部署它;儘管它們提供了很多建議和示例 - 但最終,您需要決定使用哪個數據庫,使用哪個Web服務器以及如何部署應用程序。

在世界的NodeJS - 的主要焦點是非阻塞I/O速度響應的。 Nodejs擅長於在有限的資源上處理大量的同時請求。因此,它爲開發需要快速響應請求的應用程序提供了非常強大的基礎......就是這樣。當您在節點或任何其他專門的低級庫中編程時,您需要確保代碼充分利用庫。因此,如果您開始在節點中編寫阻止代碼,您會發現您期望的性能尚未達到。

nodejs並不關心應用程序的實際功能。把它想象成一個非常快速,非常強大的工具。你可以用它來構建任何東西,但是你需要知道該工具的設計目標是什麼,以便知道何時使用它。

nodejs讓你在更低層次上工作 - 這就是爲什麼有很多包可以幫助你做各種各樣的節點;以及多種方式可以將組件和創建自己的堆棧 - 取決於您在節點頂部構建的內容。把它想象成樂高積木。

nodejs和django不是互斥的。你可以在你的應用程序中利用它們並利用它們的優勢,並利用每個方法的優點。


至於你的具體問題:

難道我得到的圖片?任何意見?

我不知道。你是否?

是否還有其他組件需要使用?開始?

答案是肯定的,因爲你不想從頭開始構建所有東西。每個堆棧都有自己的用於開發服務的庫組件。對於Django,有django rest框架(DRF)。

哪個框架最適合CRUD? 哪個框架最適合RESTful?任何其他模塊需要? 最適合打印的報告生成器? 最好的圖表工具?

沒有什麼東西是最好的。這個問題只是徵求意見。它像問,什麼是最好的果汁?

哪些框架正在使用最快和最可靠的CRUD PostgreSQL的

人們已經制定了關於PostgreSQL的頂部許多強大的應用程序;然而,由於nodejs綁定到JavaScript - 在這方面仍有很多工作要做。

我可以在兩種環境中鎖定圖書館(商業機密)嗎?

是。

是否有更好的創建ERP /會計工具?

ERP和會計是兩個非常不同的事情。有很多以Python編寫的會計軟件包/應用程序。用Python編寫的ERP系統非常少。

你不能將兩者結合在一起。

在Node.js上使用Angular的好處是什麼?

在_____上方使用Angular(插入您最喜歡的後端)的同樣好處。 Angular只是一個前端庫。

一個軼事的好處是Angular和Node都使用相同的編程語言。

+0

謝謝!我解釋說,我的嵌入式圖片是在正確的軌道上。 Django更易於編碼。我理論上可以在Angular中構建一切(跳過Django和Node.js)。而且從Node.js到Postgresql的連接可能會更好。正如我所指出的,我仍然有很多東西需要學習。有點更清楚但仍然困惑。 – sibert

相關問題