Задать вопрос
Mihailenko_SG
@Mihailenko_SG
Наверное, самый спрашивающий пользователь

Какой стек выбрать для не сложного многопользовательского SPA?

Доброго времени суток!
Хочу сразу предупредить - я веб-дизайнер, у меня есть проработанная и детализированная идея для своего стартапа, который я хочу собственноручно создать-протестировать-оптимизировать-запустить. Амбиции подкреплены IQ и лютой настойчивостью, поэтому, пожалуйста, по возможности не бросайтесь камнями в духе "успокойся, ты в одиночку это не осилишь", "сними розовые очки". Я из тех людей, которые считают что "хочешь сделать хорошо, сделай это сам", и поэтому изучение до какого-то минимально достаточного уровня необходимого языка программирования не катастрофа. Да и в моем случае нет бюджета/желания на команду/инвесторов


СУТЬ ВОПРОСА:
Задумывается многопользовательское SPA SaaS-приложение, глобально не обладающее в моем понимании очень сложными функциями. На данный момент я вижу программную логику как запись, простые арифметические операции и чтение простых чисел (текста) из БД. Из отдаленных примеров, допустим, Todoist, MyFitnessPal (да, я понимаю, что это все крупные ребята, но что в голову пришло). Т.е. не контент-ориентированные приложения (в смысле изображений/видео/аудио).

Грубо говоря, пользователь регистрируется, получает свой персональный сервис (по типу SPA), вносит и читает периодически разного рода простые данные, смотрит такую же простую аналитику, построенную арифметически на этих данных. Пока я вижу это как "отрисовываю интерфейс на html/css + щепотка JS, связываю front с back-эндом на PHP/JS, храню все в MySQL" (ну и оптимизирую nginx и разного рода кешированием). Ну и, как без этого, нужно простое API для связывания с мобильными приложениями (POST/GET). Извините, если у многих сейчас кровь из глаз пошла и мозги потекли, пока у меня такое представление - я в самом начале пути ))

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

В частности я не могу определиться:
1. Делать проект на "чистом" LAMP + JS
2. Или же брать Angular (который именно под SPA и заточен)

По-моему, все равно что изучать с нуля - ванильный JS или Angular. Да, для последнего потребуется общее представление о JS, но там насколько я знаю много чего чисто своего (особенно в устаревшем AngularJS). Но в тоже время может в нем нет необходимости, для моих задач. Может использование Angular только усложнит проект, хоть и убережет от многих потенциальных ошибок... Я сторонник минимализма, перфекционист - поэтому в любом случае буду стараться сделать что-то максимально простое и надежное (насколько у меня хватит мозгов).

Для тех, кто окончательно запутался в моем повествовании:
Какой набор элементов нужен для проекта такого рода, какая базовая архитектура работы приложения будет оптимальной и стоит ли рассматривать Angular (как замену JS, наверное)? И какое место в механике проекта должен занимать Angular?

P.S.: Буду очень признателен за развернутый ответ, который поможет мне уложить все правильно в голове и начать двигаться в верном направлении. Если с кем-то найдем общий язык, то в будущем мог бы обращаться к Вам за оплачиваемой персональной консультацией

P.P.S.: Сразу скажу, я понимаю, что нужно курить мануалы и учить матчасть, но весь мой вопрос сейчас в том, что именно нужно "курить"
  • Вопрос задан
  • 524 просмотра
Подписаться 2 Средний Комментировать
Решения вопроса 2
rockon404
@rockon404
Frontend Developer
Для вашей задачи можно использовать React/Vue + Webpack + Koa + ReactNative/Weex + MongoDB/MySQL/GraphQL + Docker + Nginx + Git.
1. На React вы сможете написать как само веб приложение, так и нативные мобильные клиенты под Android и IOS с помощью React Native. Можно выбрать Vue - он проще для новичка и на нем также можно писать нативные мобильные приложения c Weex. Использовать Angular не советую, так как порог вхождения у него выше, а грамотную архитектуру написать сложнее. Тут нужен опыт или советы опытного разработчика.
2. Webpack. Как не крути, а со сборкой фронтенда вам придется разобраться. В современной разработке без этого никуда. Использовать решения вроде create-react-app, лично я не советую. Как альтернативу для быстрого старта, лучше выбрать ReKit. Это тулкит для разработки на React, содержащий в себе полноценную IDE, начальную структуру проекта с роутингом и Redux, DevServer, HMR, инструменты для тестирования и много других интересных фич, вроде аналитики. Еще в сгенерированном проекте полностью отсутствует вендорная магия, вроде react-scripts в create-react-app и у вас не будет каких либо проблем с миграцией.
3. Если выберите Koa для сервера, вам, как минимум, не придется изучать еще один ЯП. API накидать на нем плевое дело для опытного разработчика, вам же придется изучать статьи и репозитории с примерами на github. Можно выбрать Express это предшественник Koa, и в силу возраста, статей и ответов на типовые вопросы на stackoverflow для него больше.
4. Выбор БД не принципиален.
5. Использование Docker так же не обязательно, но разобравшись сразу, вы во многом облегчите себе жизнь и не столкнетесь с ситуацией, что ваш проект который вроде работал локально, не хочет заводиться на удаленном сервере.
Ну Nginx и Git думаю в представлении и обосновании мотивации к использованию не нуждаются.
Так же, возможно, хорошим решением будет использование облачных сервисов вроде Amazon Web Services

Прежде чем браться изучать эти инструменты вам обязательно надо хорошо изучить JavaScript, HTML и CSS.

По приложению вам понадобится:
1. Веб сайт с описанием сервиса и формой входа/регистрации
2. Клиентское приложение
3. Админка
4. Мобильные приложения

Потратьте время на пользовательские истории, UML диаграммы и схемы интерфейсов. Используйте трекер задач.

Мое мнение, чтобы изучить все вышеперечисленное, а начинать вам, судя по всему, придется начать с основ JavaScript, HTML и CSS, уйдет уйма времени. Чтобы после изучения всего вышеперечисленного, научиться на всем этом писать хороший код, уйдет еще больше времени. Одно дело изучить инструменты, совсем другое научиться писать хороший код, решать типовые задачи, организовывать архитектуру. А решать задачи всех планов, вам придется как по фронтенду, так и по бекенду.

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

Если на рынке уже есть сильный конкурент и ваш сервис просто будет повторять его бизнес модель, то он вряд ли взлетит, только потратите силы и время. Обязательно изучите рынок прежде чем, что-либо предпринимать.
Ответ написан
delphinpro
@delphinpro Куратор тега JavaScript
frontend developer
В частности я не могу определиться:
1. Делать проект на "чистом" LAMP + JS
2. Или же брать Angular (который именно под SPA и заточен)


Тут и думать нечего — нужно брать фреймворк (п.2).
Я бы взял Vue, он попроще в понимании.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
index0h
@index0h
PHP, Golang. https://github.com/index0h
При этом, как Вы понимаете, нет цели изучить весь язык, стать супер-программистом.

Конкретно из-за этой строчки, то как вы хотите добиться результата - не имеет смысла.
Это тоже самое, что хотеть написать "абстрактную войну и мир", без знания языка.

вносит и читает периодически разного рода простые данные

Любая web-система оперирует разного рода простыми данными, в смысле вообще любая. Да, даже google
смотрит такую же простую аналитику, построенную арифметически на этих данных

Аналитика строится на базе большого набора данных

Рекомендую не использовать слово "просто", оно вводит в заблуждение прежде всего вас.

Или же брать Angular (который именно под SPA и заточен)

У вас данные должны будут где-то храниться, SPA не решает эту задачу

По пробуйте следующий стек:
- LAMP
- Yii2
- JS
- Vue
- Webpack
- Gulp

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

Я из тех людей, которые считают что "хочешь сделать хорошо, сделай это сам"

Сколько железа вы уже выплавили самостоятельно?))
Ответ написан
Ваш ответ на вопрос

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

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