Django и Node-как это работает? [закрытый]

для того, чтобы сделать веб-приложение с возможностями RESTful я читал и смотрел тонны статей и видео, и я до сих пор не получить полную картину того, как это работает. И который я должен выбрать. Каждый другой ответ-это не полезное "это зависит". Я свел его к первому выбору между Django и Node. Но нигде я не нахожу всю "картину" того, как части работают вместе и какие модули необходимы. Поэтому я попытался представить все это в виде грубой иллюстрации. Отмечать что я новичок в этом деле.

Я разрабатываю приложение ERP с учетными модулями. В основном речь идет о CRUD помимо просмотра диаграмм, печати и хранения документов. Итак, это "это зависит"

единственное, о чем мне удалось принять решение, это использовать nginx, Postgresql и Debian 8 в качестве инструментов/ОС. Это неподвижные звезды.

мои вопросы на самом деле не являются общим Django vs Node.js и это не просто мнение I хочу:

  1. изображение ниже правильно? Есть комментарии?
  2. есть ли какие-либо дополнительные компоненты, которые будут необходимы? Для начала?

Node.js and Django structure

1 ответов


У вас много вопросы - и на StackOverflow должен быть один вопрос, который можно ответить, не вызывая много споров и мнения, а не факты.

таким образом, я думаю, что ваш вопрос может быть закрыт как "слишком широким", однако я думаю, что он заслуживает ответа.

Я не собираюсь говорить "это зависит", хотя на самом деле это все сводится к - но вот моя попытка объяснить это.

nodejs-это среда выполнения. Это среда, которая позволяет разрабатывать код на сервер с помощью JavaScript. Чтобы сделать что-нибудь полезное с nodejs, помимо "hello world"; вам нужно будет использовать фреймворк, и есть тонны тех, кто вокруг, и различные стеки были разработаны сообществом, чтобы связать все компоненты вместе. Примером такого стека является MEAN, который является MongoDB для базы данных, Express для фреймворка, Angular для помощи с интерфейсом и Node для запуска всего этого.

Джанго - framework-это не среда выполнения. Это означает, что он находится в одном шаге от мира узлов. Среда выполнения для django-Python. django также не является "стеком", как означает, вы можете разработать свой собственный стек поверх него, но поскольку django - это" включенная в батареи " структура, вам действительно нужно добавить в нее базу данных - она включает в себя все остальное, что вам нужно.

REST-это просто способ разработки веб-сервисов. Это не язык, не платформа и не библиотека. Это набор правил, описывающих способ разработки API таким образом, что они используют семантические глаголы HTTP.

вы можете использовать любую библиотеку и язык программирования для разработки RESTful-сервис. Все, что вам действительно нужно, это две вещи [a] библиотека для связи по HTTP [b] способ сериализации данных, предпочтительно в JSON (но даже это не требование).

nginx-это очень быстрый веб-сервер и обратный прокси. Причина часто упоминается-это потому, что это очень дорого для структуры, чтобы подавать статические носители. Все запросы к фреймворку (либо в мире django, либо в мире nodejs) должны проходить через большую цепочку компонентов, которые помогают декодировать HTTP-запрос и создавать структуру данных, которая проста в использовании разработчиками. Эту цепочку компонентов часто называют промежуточным. Поскольку каждый запрос должен проходить через это промежуточное программное обеспечение, лучше по соображениям производительности, чтобы запросы, которые не нуждаются в "мощности" приложения для выполнения (например, запрос на изображение, таблица стилей, видеофайл) обрабатывается чем-то другим. Это то, для чего используется nginx, так как его очень быстрый веб-сервер.


теперь, когда они объяснены, вам нужно увидеть, какой стек лучше всего работает для вашего приложения. Для этого вам нужно немного узнать о философии/обосновании или проблеме, которую каждый стек пытается решить.

для django-это просто. Django был создан командой, работающей над несколькими газетами, чтобы помочь им управлять контентом, который был опубликовано на разных сайтах. Как таковой, он разработан таким образом, что управление контентом имеет первостепенное значение. Вот почему он имеет очень надежную консоль администрирования в качестве стандартного компонента; и встроенный довольно надежный ORM и свой собственный механизм шаблонов. Django оставляет за вами, чтобы выяснить, как лучше всего на самом деле запустить и развернуть его; Хотя они предоставляют много предложений и примеров, но в конце концов, это до вас, чтобы решить, какую базу данных использовать, какой веб-сервер использовать, и как развертывание приложения.

в мире nodejs - основной фокус неблокирующий ввод-вывод и скорость отклика. Nodejs выделяется тем, что может обслуживать множество одновременных запросов на ограниченных ресурсах. Поэтому он предоставляет вам очень мощную основу для разработки приложений, которые должны быстро реагировать на запросы ... и это все. Когда вы программируете в узле или любой другой специализированной библиотеке нижнего уровня, вам нужно убедиться, что ваш код принимает полное преимущество библиотеки. Итак, если вы начнете писать блокирующий код в узле, вы обнаружите, что ожидаемая производительность не была достигнута.

nodejs не заботится о том, что приложение на самом деле делает. Думайте об этом как об очень быстром, очень мощном инструменте. Вы можете построить что-нибудь с ним, но вам нужно знать, что инструмент разработан, чтобы сделать лучше, чтобы знать, когда его использовать.

nodejs имеет вас работать на более низком уровне - именно поэтому есть много пакеты, которые помогают вам делать все виды вещей с узлом; и несколько способов, которыми вы можете взять компоненты и создать свой собственный стек - в зависимости от того, что вы строите поверх узла. Думайте об этом как о строительных блоках Lego.

nodejs и django не являются взаимоисключающими. Вы можете использовать как в своем приложении, так и использовать свои сильные стороны и использовать то, что каждый делает лучше всего.


Что касается ваших конкретных вопросов:

Я получил фото? Есть комментарии?

Я не знаю. Неужели?

есть ли какие-либо дополнительные компоненты, которые будут необходимы? Для начала?

ответ на этот вопрос-да, потому что вы не хотите строить все с нуля. Каждый стек имеет свои собственные компоненты библиотек для разработки служб. Для django существует Django Rest framework (DRF).

какие рамки лучше всего подходят для CRUD? Какие рамки лучше всего подходят для Спокойный? Любой другой модуль необходим? Лучший генератор отчетов для печати? Лучшие инструменты диаграммы?

нет ничего, что является" лучшим " для чего-либо. Этот вопрос просто спрашивает мнения. Это как спросить, Что такое лучший фруктовый сок?

какие фреймворки являются самыми быстрыми и надежными для CRUD с использованием Postgresql

люди разработали много надежных приложений поверх postgresql; однако, поскольку nodejs привязан к javascript - есть еще много работы в этой области.

могу ли я заблокировать библиотеку (коммерческие секреты) в обеих средах?

да.

есть ли лучшие инструменты для создания ERP / бухгалтерского учета?

ERP и бухгалтерский учет-две разные вещи. Есть куча бухгалтерских пакетов/приложений, написанных на Python. Существует очень мало ERP-систем, написанных на Python.

вы не можете объединить два и сложить все вместе.

каковы преимущества использования углового поверх узла.Яш?

то же преимущество использования Angular поверх _ _ _ _ _ _ (вставьте свой любимый бэкэнд). Angular - это просто библиотека переднего плана.

анекдотическое преимущество заключается в том, что и Angular и Node используют один и тот же язык программирования.