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

时间:2015-12-06 06:06:26

标签: python django node.js express postgresql-9.1

为了制作具有RESTful功能的Web应用程序,我已阅读并观看了大量文章和视频,但我仍然无法全面了解其工作原理。我应该选择哪个。其他每个答案都没有帮助“它取决于”。我把它归结为Django和Node之间的第一选择。但是我找不到这些部分如何协同工作以及需要哪些模块的整个“图片”。因此,我试图将所有内容都放在一个粗略的插图中。请注意,我是一个完整的新手。

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

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

我的问题并不是常见的Django vs Node.js,这不仅仅是我想要的意见:

  1. 下面的图片是否正确?有什么意见吗?
  2. 是否还需要其他组件?要开始吗?
  3. Node.js and Django structure

1 个答案:

答案 0 :(得分:23)

你有一个很多的问题 - 而且在StackOverflow上应该有一个问题可以回答,而不会引起很多争论或有意见而不是事实。

因此,我认为您的问题可能会因为“太宽”而被关闭。但我认为值得回答。

我不会说"这取决于",虽然这真的是归结为 - 但这是我试图解释它。

nodejs是一个运行时。这是一个允许您使用javascript在服务器上开发代码的环境。为了对nodejs做任何有用的事情,超越" hello world&#34 ;;你需要使用一个框架,社区已经开发了大量的框架和各种堆栈,以便将所有组件连接在一起。这种堆栈的一个例子是MEAN,它是用于数据库的MongoDB,用于框架的Express,用于协助前端的Angular,以及用于运行它的Node。

django是一个框架 - 它不是运行时。这意味着它是从节点世界中删除的一步。 django的运行时是Python。 django也不是"堆栈"像MEAN一样,你可以在它上面开发自己的堆栈 - 但是因为django是一个"电池包括"框架,你只需要添加一个数据库 - 它包含你需要的一切。

REST只是设计Web服务的一种方式。它不是语言,平台或图书馆。它是一组规则,用于描述设计API的方法,以便利用HTTP的语义动词。

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

nginx只是一个非常快速的网络服务器和反向代理。经常提到它的原因是因为框架服务静态媒体非常昂贵。所有对框架的请求(无论是在django世界还是在nodejs世界中)都必须通过一大串组件来帮助解码HTTP请求并创建一个易于开发人员使用的数据结构。这个组件链通常称为中间件。由于每个请求都必须通过此中间件,因此,出于性能原因,请求不需要“电源”#34;要执行的应用程序(如图像请求,样式表,视频文件)由其他东西处理。这就是nginx的用途,因为它是一个非常快速的网络服务器。

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

对于django来说 - 这很容易。 Django是由一个在多家报纸上工作的团队创建的,旨在帮助他们管理在不同网站上发布的内容。因此,它的设计使得内容管理成为首要关注的问题。这就是为什么它有一个非常强大的管理控制台作为标准组件;以及内置的非常强大的ORM和自己的模板引擎。 Django让你了解如何最好地实际运行和部署它;虽然它们确实提供了很多建议和示例 - 但最终,您需要决定使用哪个数据库,使用哪个Web服务器以及如何部署应用程序。

在nodejs世界中 - 主要关注的是非阻塞I / O 响应速度。 Nodejs能够在有限的资源上提供大量的同时请求。因此,它为您提供了一个非常强大的基础来开发需要快速响应请求的应用程序......以及它。在节点或任何其他专门的低级库中编程时,您需要确保您的代码充分利用了库。因此,如果您开始在节点中编写阻止代码,您将发现您所期望的性能尚未实现。

nodejs并不关心应用程序实际执行的操作。可以把它想象成一个非常快速,非常强大的工具。您可以使用它构建任何内容,但是您需要知道该工具的最佳设计是什么,以便知道何时使用它。

nodejs让你在较低级别工作 - 这就是为什么有很多软件包可以帮助你用节点做各种事情;以及多种方式可以获取组件并创建自己的堆栈 - 具体取决于您在节点之上构建的内容。把它想象成乐高积木。

nodejs和django不是互斥的。您既可以在应用程序中使用它们,也可以利用它们的优势,并充分利用各自的优势。

就您的具体问题而言:

  

我得到了照片吗?有什么意见吗?

我不知道。你呢?

  

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

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

  

哪种框架最适合CRUD?   哪个框架最适合RESTful?还需要其他模块吗?   最好的报告生成器?   最好的图表工具?

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

  

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

人们已经在postgresql之上开发了许多强大的应用程序;然而,当nodejs绑定到javascript时 - 在这个领域仍然有很多工作要做。

  

我可以在两种环境中锁定库(商业机密)吗?

  

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

ERP和会计是两个截然不同的事情。有很多用Python编写的会计软件包/应用程序。用Python编写的ERP系统很少。

你不能将两者结合起来并将它们混在一起。

  

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

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

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