Верно ли, что логика приложения не должна быть в Angular, а должна оставаться в Node?
Есть логика web-приложения, которая имеет функционал, производящий расчёты, связанные с обработкой входных данных web-приложения. Пример: web-приложение возвращает первые миллион цифр в числе pi после рандомной цифры. Соответственно, сам процесс поиска миллиона цифр в числе pi есть логика приложения. И верно ли, что такая логика должна быть строго на back-end?
А есть логика интерфейса. И в Angular (на front-end) должна быть только та логика, которая отвечает за работу интерфейсов (анимации, кнопочки, формочки). И верно ли, что Angular ничего не должен знать про логику приложения? Он должен только взять данные, пришедшие с POST-запроса, и отобразить, раскидав по тэгам. Ну и отправлять данные в POST-запросах, обработав формы.
Или как правильней в данном случае? Правилен ли подход, в котором Angular служит просто View+Controller, который через HTTP обращается к функционалу Model (back-end)?
WebWorkers (параллельные процессы), именно служат для вычислительных целей для фронтовой части.
По поводу mobile, api часто делают для них разные, не стоит их в один скоп скидывать по дефолту.
Занимать сервер для больших вычислений мне кажеться не лучшая идея. Тем более если нужно будет get отдавать, тогда лучше в базу сразу писать результат таких операций, и обновлять по требованию.
Придется копипастить алгоритм? А если он занимает 100к строк кода, мне из Ангуляра всё переписывать под mobile? А не проще ли запилить сервер PHP/Java/Node на мульти-процессорной машине, и всё там считать? И ничего копипастить не надо. А по поводу API, можно и разные роутеры делать в Express. Но фишка в том, что функция уже написана, и к ней доступ есть на бэке.
Urukhayy: 100к строк, это из ряда фантастики. Нода в первую очередь модульная, что значит копипастить? Просто создавайте класс с методами и используйте их по нужде.
Есть ряд паттернов программирования и вы явно их нарушаете.
Мощность ПК безусловно важно, а что по поводу стоимости серверов? Когда вам надо будет ваше решения скалировать как горизонтально так и вертикально? За это вы готовы платить?
Нужно разделить логику на сервисы и дальше можно думать что и где использовать и какими способами.
Ну на самом деле необязательно. Конечно же тусовать методы для расчёта чисел после пи в компоненты не стоит. Но эту логику можно добавить в другую предназначенную для подобных скриптов директорию и вызывать оттуда.
Немного не понимаю зачем тебе get и post, если back-end на nodejs - приложение спокойно может работать на клиенте без сервера - если, конечно, база данных не нужна и это чисто функциональное приложение для расчёта цифр в числе pi, временные данные можно складывать в json.
Дело в том, что не каждый ПК вытащит расчет миллиона знаков числа pi. Web-приложение не может купить более современное железо каждому юзеру, но зато можно купить железо серверное, и все расчеты вести там. Для этого и Get/Post. Это первое. Второе. А если я захочу mobile-app для этой же процедуры? Мне придется алгоритм поиска миллиона знаков в прямом смысле слова КопиПастить из Ангуляра. А если я сделаю его на сервере, мне просто нужно будет послать HTTP-запрос из Ангуляра, и из Мобильного приложения. И алгоритм поиска не нужно копипастить.
Urukhayy: годный аргумент. В таком случае, если обработка самого алгоритма будет происходить на сервере, то встраивать его составные части в ангуляр скорее всего и не получится, поскольку в алгоритме будет своя область видимости данных. Его даже необязательно на серверном js писать. Можно использовать что-то другое: python, php, C#, ruby... just открывай ajax, постай входные данные, следи на response (чтоб не скучал юзер, пока ведётся расчёт, я бы повесил preoader) и получай data, размещая их в шаблоны.
Вообще для этого даже ангуляра не нужно. Если у тебя не single page app, или же app с одной страницей без сложного route по урлам то для этого легче использовать jQuery с его xhr = ajax({param:value}); xhr.success() и $(document).ajaxStart() и .ajaxStop()