Django和Node – 它是如何工作的?

为了创build一个具有RESTfulfunction的Web应用程序,我已经阅读并观看了大量的文章和video,但是我仍然没有完整地了解它是如何工作的。 而我应该select哪一个。 其他答案是没有帮助的“这取决于”。 我把它归结为Django和Node之间的第一select。 但是在哪里我找不到这些作品如何一起工作以及需要哪些模块的整个“图片”。 所以我试图把所有的东西都放进一个粗略的例子。 请注意,我是一个完整的新手在此。

我使用会计模块开发ERP应用程序。 除了查看图表,打印和存储文档外,基本上主要是关于CRUD。 所以这是“取决于”

我做出的唯一决定就是使用nginx,Postgresql和Debian 8作为工具/操作系统。 这些是固定的星星。

我的问题不是真正常见的Django vs Node.js,这不仅仅是我想要的观点:

  1. 下面的图片是否正确? 任何意见?
  2. 是否还有其他组件需要? 开始?

Node.js和Django结构

你有很多问题 – 在StackOverflow上,应该有一个问题可以回答,而不会产生大量的争论或者有意见而不是事实。

因此,我认为你的问题可能会被视为“太广泛”。 不过我认为这是值得回答的。

我不会说“这取决于”,尽pipe这完全是归结为 – 但这是我的尝试来解释它。

nodejs是一个运行时。 这是一个可以让你使用javascript在服务器上开发代码的环境。 为了做任何有用的nodejs,超越“hello world”; 你需要使用一个框架,并且周围有很多这样的框架,社区已经开发了各种框架来将所有组件捆绑在一起。 这样一个堆栈的一个例子是MEAN,它是用于数据库的MongoDB,用于框架的Express,用于协助前端的Angular,以及用于运行它的Node。

Django是一个框架 – 它不是一个运行时。 这意味着它从节点世界中被移除了一步。 Django的运行时是Python。 django也不是像“MEAN”这样的“堆栈”,你可以在它之上开发自己的堆栈 – 但是由于django是一个“包含电池”的框架,你只需要添加一个数据库 – 它包括了你需要的一切。

REST只是deviseWeb服务的一种方式。 它不是一种语言,或一个平台或一个图书馆。 它的一组规则描述了deviseAPI的方式,以便利用HTTP的语义动词。

您可以使用任何库和编程语言来开发一个RESTful服务。 所有你真正需要的是通过HTTP进行通信的两个方面,一种是序列化数据的方法,最好是使用JSON(但即使这不是要求)。

nginx只是一个非常快的networking服务器和反向代理。 之所以经常被提及,是因为静态媒体的服务框架非常昂贵。 所有对框架的请求(无论是在django世界还是在nodejs世界中)都必须经过大量的组件链,帮助解码HTTP请求并创build一个易于开发人员使用的数据结构。 这个组件链通常被称为中间件。 由于每个请求都必须经过这个中间件,所以性能上的原因是,不需要执行应用程序的“权力”的请求(如对图像,样式表,video文件的请求)被执行由别的东西处理。 这是nginx使用的,因为它是一个非常快的networking服务器。


现在解释了这些,你需要看看什么栈最适合你的应用程序。 要做到这一点,您需要了解一些关于每个堆栈试图解决的哲学/理由或问题。

Django – 这很容易。 Django由一个团队在多家报纸上创build,以帮助他们pipe理在不同网站上发布的内容。 因此,它的devise使得内容pipe理成为首要关注的问题。 这就是为什么它有一个非常强大的pipe理控制台作为标准组件; 和一个内置的相当强大的ORM和自己的模板引擎。 Django让你知道如何最好地运行和部署它。 虽然他们提供了很多的build议和例子,但是最终还是要决定使用哪个数据库,使用哪个Web服务器以及如何部署应用程序。

在nodejs世界中 – 主要关注的是非阻塞I / O响应速度 。 Nodejs能够在有限的资源上同时处理很多请求。 因此,它为开发需要快速响应请求的应用程序提供了非常强大的基础…就是这样。 当你在节点或任何其他专门的低级库中编程时,你需要确保你的代码充分利用了库。 所以,如果你开始在节点上编写阻塞代码,你会发现你期望的性能还没有达到。

nodejs不关心应用程序的实际function。 把它想象成一个非常快速,非常强大的工具。 你可以用它来构build任何东西,但是你需要知道这个工具是怎样devise的,以便知道何时使用它。

nodejs让你在更低的层次上工作 – 这就是为什么有很多的软件包可以帮助你做各种各样的节点; 以及多种方式,你可以采取组件和创build自己的堆栈 – 取决于你在节点上build立的东西。 把它想像成乐高积木。

nodejs和django不是互斥的。 你可以在你的应用程序中利用它们并利用它们的优势,并利用每个方法的优势。


至于你的具体问题:

我有照片吗? 任何意见?

我不知道。 你是否?

是否还有其他组件需要? 开始?

答案是肯定的,因为你不想从头开始构build所有的东西。 每个堆栈都有自己的用于开发服务的库组件。 对于django,有django rest框架(DRF)。

哪个框架最适合CRUD? 哪个框架最适合RESTful? 任何其他模块需要? 最好的报告生成器打印? 最好的图表工具?

没有什么东西是最好的。 这个问题只是在征求意见。 它就像问,什么是最好的果汁?

对于使用Postgresql的CRUD,哪个框架最快,最可靠

人们已经在postgresql之上开发了许多强大的应用程序; 然而,因为nodejs绑定到JavaScript – 在这方面还有很多工作要做。

我可以在两种环境中locking图书馆(商业秘密)吗?

是。

是否有更好的工具来创buildERP /会计?

ERP和会计是两个完全不同的东西。 有很多用Python编写的会计软件包/应用程序。 用Python编写的ERP系统很less。

你不能把两者结合在一起。

在Node.js上使用Angular有什么好处?

在_____之上使用Angular的同样好处(插入你最喜欢的后端)。 Angular只是一个前端库。

一个轶事的好处是,Angular和Node都使用相同的编程语言。