Closed. This question needs to be more
focused。它当前不接受答案。
想要改善这个问题吗?更新问题,使它仅关注
editing this post的一个问题。
5年前关闭。
Improve this question
为了使Web应用程序具有RESTful功能,我已经阅读并观看了大量的文章和视频,但是我仍然没有完整了解其工作原理。而我应该选择。其他所有答案都是无益的“取决于”。我将其归结为Django和Node之间的首选。但是,在任何地方我都找不到有关各个部分如何协同工作以及需要哪些模块的完整“图片”。因此,我试图将所有内容进行粗略的说明。请注意,我是这个方面的新手。
我开发带有会计模块的ERP应用程序。基本上,除了查看图表,打印和存储文档外,它主要涉及CRUD。这就是“取决于”
我唯一能够做出决定的事情就是使用nginx,Postgresql和Debian 8作为工具/操作系统。这些是固定的星星。
我的问题并不是真正的Django vs Node.js,这不仅仅是我想要的一种观点:
下面的图片正确吗?任何意见? 是否需要其他组件?开始?
您有很多问题-在StackOverflow上,应该有一个可以回答的问题,而无需引起很多争论或有观点而不是事实。
因此,我认为您的问题可能会以“范围太广”结束。但是我认为这应该得到答案。
我不会说“取决于”,尽管这实际上可以归结为-但是,这是我尝试解释的内容。
nodejs是一个运行时。这是一个允许您使用javascript在服务器上开发代码的环境。为了对nodejs做任何有用的事情,除了“hello world”之外;您将需要使用一个框架,并且周围有成千上万个框架,并且社区开发了各种堆栈来将所有组件 bundle 在一起。这样的堆栈的一个例子是MEAN,它是用于数据库的MongoDB,用于框架的Express,用于协助前端的Angular和用于运行所有程序的Node。
django是一个框架-它不是运行时。这意味着这是从节点世界中移除的一步。 django的运行时是Python。 django也不像MEAN那样是“堆栈”,您可以在它之上开发自己的堆栈-但由于django是“包含电池”框架,因此您只需要向其中添加数据库-它包含您需要的其他所有内容。
REST只是设计Web服务的一种方式。它不是语言,平台或库。它是一组规则,描述了设计API的方法,以便它们利用HTTP的语义动词。
您可以使用任何库和编程语言来开发RESTful服务。您真正需要的只是两件事[a]通过HTTP进行通信的库[b]一种数据序列化的方法,最好是JSON(但这不是必需的)。
nginx只是一个非常快速的网络服务器和反向代理。经常提到它的原因-是因为服务于静态媒体的框架非常昂贵。对框架的所有请求(在django世界中或在nodejs世界中)都必须经过大量的组件链,这些组件可以帮助解码HTTP请求并创建易于开发人员使用的数据结构。这种组件链通常称为中间件。由于每个请求都必须通过此中间件,因此出于性能方面的考虑,最好是不需要应用程序“功能”的请求(例如,对图像,样式表,视频文件的请求)执行由别的东西处理。这就是nginx的用途,因为它的网络服务器非常快。
现在已经解释了这些内容,您需要查看哪种堆栈最适合您的应用程序。为此,您需要对每个堆栈都试图解决的原理/合理性或问题有所了解。
对于django-这很容易。 Django是由致力于多个报纸的团队创建的,旨在帮助他们管理在不同网站上发布的内容。因此,它的设计使内容管理成为首要关注的问题。这就是为什么它具有非常强大的管理控制台作为标准组件的原因;以及内置的功能强大的ORM及其自己的模板引擎。 Django由您自己决定如何最好地实际运行和部署它。尽管它们确实提供了很多建议和示例-但最终由您决定使用哪个数据库,使用哪个Web服务器以及如何部署应用程序。
在nodejs世界中-主要重点是非阻塞I/O和响应速度。 Nodejs擅长于在有限的资源上处理大量同时请求。因此,它为您开发需要快速响应请求的应用程序提供了非常强大的基础……仅此而已。在节点或任何其他专门的较低级库中编程时,需要确保您的代码充分利用了该库。因此,如果您开始在节点中编写阻塞代码,则会发现尚未达到预期的性能。
nodejs不在乎应用程序实际做什么。可以将其视为一个非常快速,非常强大的工具。您可以用它来构建任何东西,但是您需要知道该工具的最佳设计是什么,以便知道何时使用它。
nodejs让您的工作处于较低水平-这就是为什么有很多软件包可以帮助您使用node进行各种操作的原因;以及获取组件和创建自己的堆栈的多种方式-取决于您在节点顶部构建的内容。可以将其视为乐高积木。
nodejs和django不是互斥的。您可以在自己的应用程序中充分利用它们的优势,并充分利用各自的优势。
至于您的具体问题:
Did I get the picture? Any comments?
我不知道。你是否?
Is there any further components that will be needed? To get started?
答案是肯定的,因为您不想从头开始构建所有内容。每个堆栈都有其自己的用于开发服务的库组件。对于django,有django rest框架(DRF)。
Which framework are best for CRUD?
Which framework are best for RESTful? Any other module needed?
Best report generator for printing?
Best diagram tools?
没有什么是“最佳”的。这个问题只是在征求意见。就像问,什么是最好的果汁?
Which framework are fastest and most reliable for CRUD using Postgresql
人们已经在postgresql之上开发了许多健壮的应用程序。但是,由于nodejs与javascript绑定(bind)-在这一领域仍然有很多工作要做。
Can I lock the library (trade secrets) in both environments?
是的。
Is there better tools for creating ERP/Accounting?
ERP和会计是两个非常不同的事物。有大量用Python编写的会计软件包/应用程序。用Python编写的ERP系统很少。
您不能将两者结合在一起。
What is the benefits using Angular on top of Node.js?
在_____顶部使用Angular的相同好处(插入您喜欢的后端)。 Angular只是一个前端库。
一个有趣的好处是Angular和Node都使用相同的编程语言。