【问题标题】:Django and Node – how does it work? [closed]Django 和 Node——它是如何工作的? [关闭]
【发布时间】:2016-03-10 22:28:08
【问题描述】:

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

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

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

我的问题并不是真正常见的 Django 与 Node.js,我想要的不仅仅是意见:

  1. 下图正确吗?有cmets吗?
  2. 是否还需要其他组件?开始?

【问题讨论】:

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


    【解决方案1】:

    您有很多个问题 - 在 StackOverflow 上应该有一个问题可以在不引起大量辩论或有意见而不是事实的情况下得到回答。

    因此,我认为您的问题可能会以“过于宽泛”而结束;但是我认为它值得一个答案。

    我不会说“这取决于”,尽管这实际上是归结为的全部 - 但这是我试图解释它的尝试。

    nodejs 是一个运行时。它是一个允许您使用 javascript 在服务器上开发代码的环境。为了用 nodejs 做任何有用的事情,除了“hello world”;你需要使用一个框架,周围有很多这样的框架,社区已经开发了各种堆栈来将所有组件联系在一起。这种堆栈的一个例子是 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 擅长在有限的资源上同时处理大量请求。因此,它为您开发需要快速响应请求的应用程序提供了非常强大的基础……仅此而已。当您在 node 或任何其他专门的低级库中编程时,您需要确保您的代码充分利用了该库。所以,如果你开始在 node 中编写阻塞代码,你会发现并没有达到你期望的性能。

    nodejs 并不关心应用程序实际上做了什么。把它想象成一个非常快速、非常强大的工具。您可以使用它构建任何东西,但您需要知道该工具的设计目的是什么,才能知道何时使用它。

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

    nodejs 和 django 不是相互排斥的。您可以在您的应用程序中同时利用它们并发挥它们的优势,并充分利用各自的优势。


    就您的具体问题而言:

    我收到照片了吗?有cmets吗?

    我不知道。有吗?

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

    答案是肯定的,因为您不想从头开始构建所有内容。每个堆栈都有自己的用于开发服务的库组件。对于 django,有 django rest framework (DRF)。

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

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

    哪个框架对于使用 Postgresql 的 CRUD 来说最快和最可靠

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

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

    是的。

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

    ERP 和会计是两个截然不同的东西。有大量用 Python 编写的会计包/应用程序。用 Python 编写的 ERP 系统很少。

    你不能把两者结合起来。

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

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

    一个有趣的好处是 Angular 和 Node 使用相同的编程语言。

    【讨论】:

    • 谢谢!我将此解释为我的嵌入图片在正确的轨道上。而且 Django 更容易编码。而且我理论上可以在 Angular 中构建所有东西(同时跳过 Django 和 Node.js)。从 Node.js 到 Postgresql 的连接本来可以更好。正如我所指出的,我还有很多东西要学。有点清晰,但仍然感到困惑。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多