Django и Node – как это работает?

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

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

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

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

  1. Правильно ли снимок? Любые комментарии?
  2. Есть ли какие-то дополнительные компоненты, которые понадобятся? Для начала?

Структура Node.js и Django

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

Поэтому я думаю, что ваш вопрос может быть закрыт как «слишком широкий»; однако я думаю, что он заслуживает ответа.

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

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

django – это структура – это не время выполнения. Это означает, что он удаляется на один шаг из мира узлов. Время выполнения для django – Python. django также не является «стеком», как MEAN, вы можете развить свой собственный стек поверх него, но поскольку django – это «включенная батарея», вам действительно нужно добавить базу данных – она ​​включает в себя все остальное, что вам нужно ,

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

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

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


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

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

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

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

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

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


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

Я получил картину? Любые комментарии?

Я не знаю. Не так ли?

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

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

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

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

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

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

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

Да.

Есть ли лучшие инструменты для создания ERP / Accounting?

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

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

Каковы преимущества использования Angular поверх Node.js?

То же преимущество использования углового над _____ (вставьте свой любимый бэкэнд). Угловая – это просто библиотека переднего конца.

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