dvhex
@dvhex
Программист, доцент

Что нужно изучить для разработки современных веб-приложений?

Коротко по сути. Предложили заняться разработкой веб-приложений и первое, что требуется – хостинг скриншотов для одной программы. Фронтенд должен предположительно быть на Angular (или прочее). Есть достаточно большой опыт в C++ и знание большинства распространённых языков программирования. В связи с этим вопрос – что ещё нужно знать?

Теперь подробнее.

Около восьми лет программирую на си++, до этого был Delphi, разрабатывал как обычные приложения и библиотеки, так и сетевые. Также изучил другие языки программирования и в некоторых случаях их использовал: Java, Perl, Php, Ruby, JavaScript, и др., а также html, css и sql. Даже написал несложные сайты на php, и один более серьёзный на Perl. Но это сайты со статичными страницами, т.е. каждый раз происходит загрузка новой страницы с сервера. Немного поработал с jQuery и ajax. Пробовал изучать Angular и Vue.js, даже написал кое-что рабочее. Теперь не могу собрать всё это вместе и сдвинуться с мёртвой точки, чтобы создать полноценное приложение.

Если я правильно понимаю, Angular, Vue и прочие фреймворки – это только фронтенд. Куда не сунься, везде о веб-разработке говорится, как о разработке именно фронтенда, а также это непременно связано с Node.js (дабы что-то написать на ангуляре, без него никак). Каким боком связан фронтенд с Node.js - я не понимаю, т.к. Node.js - это, по сути, способ запустить JS вне браузера. Если я хочу запустить приложение в браузере, то зачем мне node? Это всё меня вводит в ступор, я вижу лишь противоречия. Примеры, в т.ч. на сайте ангуляра и на сайте vue (react тоже рассматривал) включают только фронтенд, опять же.

Если посмотреть на серверную часть, то ей не уделяется внимания ни на сайте Vue, ни на сайте Angular, ни на других, где описывается их функционал. На чём её писать и каким образом состыковать с клиентской частью? Здесь я лишь могу предположить, что сервер вместо html должен обмениваться данными с приложением посредством json или чего-то ещё. Всё-таки сервер - это основа любого сетевого приложения, и в первую очередь нужно разработать серверную часть. Честно говоря, JS мне не очень нравится, поэтому хотелось бы им ограничиться по минимуму и на сервере не использовать. TS я не изучал, но судя по примерам с Angular, изучить его можно не более, чем за вечер. Хотелось бы использовать Ruby, он мне очень понравился.

Не вполне связно получилось написать, постараюсь сформулировать вопросы, на которые я хотел бы получить ответ:

  1. Что ещё нужно изучить? Или перечисленных знаний достаточно?
  2. Можно ли не использовать Node.js и, соответственно, npm, если JS (TS) требуется только в браузере? При этом тестирование тоже необходимо.
  3. Что из себя в этом случае представляет сервер, как его можно реализовать и можно ли использовать, например, Ruby? Как состыковать его с фронтендом?


И дополнительно: буду благодарен за ссылки, а лучше книги, в которых описан принцип работы современных веб-приложений, включая клиентскую, серверную часть и протоколы, которые их связывают.
  • Вопрос задан
  • 3153 просмотра
Решения вопроса 1
iiifx
@iiifx
PHP, OOP, SOLID, Yii2, Composer, PHPStorm
В связи с этим вопрос – что ещё нужно знать?

Бэкенд вам в любом случае нужен.

Если я правильно понимаю, Angular, Vue и прочие фреймворки – это только фронтенд.

Все верно.

Куда не сунься, везде о веб-разработке говорится, как о разработке именно фронтенда, а также это непременно связано с Node.js (дабы что-то написать на ангуляре, без него никак). Каким боком связан фронтенд с Node.js - я не понимаю, т.к. Node.js - это, по сути, способ запустить JS вне браузера.

Скорее всего вы читаете статьи о фронтенде, потому в них о бэкенде ничего и нет. Как вы знаете фронтенд пишется на JS и многих подкупает то, что можно поднять NodeJS на бэкенде и используя один язык создавать сайты.

Если я хочу запустить приложение в браузере, то зачем мне node? Это всё меня вводит в ступор, я вижу лишь противоречия.

Вы не путайте. Есть технологии, которые используются в процессе работы приложения и есть технологии, которые используются в процессе разработки приложения. Все эти Gulp, Grunt, Babel, Webpack и прочие - это инструменты разработки. Они ускоряют, упрощают, повышают качество работы. В то время jQuery, Angular, React - это библиотеки и фреймворки, с помощью которых приложение будет работать.

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

Здесь я лишь могу предположить, что сервер вместо html должен обмениваться данными с приложением посредством json или чего-то ещё.

Да, JSON, как самый распространенный. Вам нужен фреймворк для бэкенда, на котором можно развернуть REST API. Насколько мне известно большинство современных фреймворов современных языков программирования, которые используются для веб-разработки, это умеют. Я не могу утверждать точно, я работаю в рамках одного языка.

Всё-таки сервер - это основа любого сетевого приложения, и в первую очередь нужно разработать серверную часть.

Однозначно. Современные одностраничные приложения(SPA) состоят из двух раздельных частей - фронтенда и бекенда. Они могут создаваться полностью раздельно разными разработчиками, главное согласовать формат передачи данных и все нюансы.

Вся прелесть SPA в разделении этих частей. Любая из них может быть заменена на другую без особых последствий. Один бэкенд может обслуживать сайты, мобильные приложения, предоставлять доступ к данным для сторонних партнерских приложений, и все это через единый API.

Что ещё нужно изучить? Или перечисленных знаний достаточно?

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

Можно ли не использовать Node.js и, соответственно, npm, если JS (TS) требуется только в браузере? При этом тестирование тоже необходимо.

Да, вполне. На стороне клиента, к примеру, JS+Angular. А на стороне бэкенда, к примеру, PHP+Laravel. Сейчас очень много языков и еще больше фреймворков под них. Выбирайте то, что для вас проще.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@Kirill-Gorelov
С ума с IT
Если посмотреть на серверную часть, то ей не уделяется внимания ни на сайте Vue, ни на сайте Angular, ни на других, где описывается их функционал. На чём её писать и каким образом состыковать с клиентской частью?

Дружище, такое ощущение, что ты путаешь бэкенд и фронтенд.
Бекенд - php, python - серверная часть
фронтенд - Angular, Vue - клиентская часть
У тебя еще как-то размытое представление о веб разработке. По крайней мере мне так показалось. Или не размытое, а путаешься!)

Держи ссылку - https://github.com/zualex/devmap как раз что тебе нежно!
Ответ написан
@denismaster
Backend - ASP.NET Core \ NodeJS
Frontend - Angular 4, Vue

Node.JS на фронтенде нужен для использования модулей и сборки всего воедино. В результате получится набор файлов, не привязанный к Node, предназначенный для браузера.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы