LINUX.ORG.RU

Посоветуйте фреймворк/заготовку для веб-приложения

 ,


0

4

Добрый день, ЛОР.

Не холивара ради, образования для (c) @anonymous (но по совести говоря, не уверен, что получится выяснить что-то интересное и не скатить тему в холивар).

Я даже не уверен, что вкладываю правильный смысл в слово «фреймворк»… Что меня интересует. Предположим, я хочу сделать веб-приложение с пользователями, сессиями и авторизацией (ну там новый багтрекер, или что ещё для коллективной работы/общения), и я не хочу писать эту авторизацию с нуля. Есть какая-нибудь библиотека под свободной лицензией, в которой это уже сделано, и программисту остаётся писать только прикладную логику?

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

Языки можно разные, хоть PHP, хоть Java, хоть Go, хоть сишечка. Я пока просто хочу понять, где что есть. Да, в гугле не забанен, но тут ещё надо понять, какие слова для гугления правильные. Я в этой области нуб, когда-то что-то клепал на PHP, но это было очень давно и недолго.

Можно, конечно, пойти от противного, посмотреть, как это сделано в каком-нибудь Nextcloud и отсечь лишнее — но это на крайний случай.

Да, просьба не спрашивать, чем существующие багтрекеры не устраивают, багтрекер — это же только пример.

★★★★★

Последнее исправление: hobbit (всего исправлений: 3)

Практически любой веб-фреймворк включает в себя и/или имеет поддержку подключения внешних имплементаций для решения подобных проблем, смотри разделы Authentication, Authorization, User management, поддержку OAuth или смотри отдельные библиотеки по указанным темам.

e1nste1n ★★★★★
()

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

Логин через внешние системы обычно реализуется через OAuth-протокол. Локальный сервис аутентификации можно не писать самим, а использовать, например, Keycloak. Там тоже будет OAuth. Библиотек поддержки полно для любого языка.

static_lab ★★★★★
()

Из PHP (т.к. у тебя имеется уже некоторый опыт на нем) могу посоветовать CakePHP. Довольно неплохой фреймворк для создания CMF-приложений с отличной MVC структурой. Там очень много из коробки. Есть скаффолдинг, миграции, интернационализация…

Он очень древний (вроде Slackware в мире Linux), но тем не менее, в нем есть все современные фичи (последняя версия от 5 октября 2020). И достаточно безопасный. Еще его авторы отказались (раньше так было, может что поменялось) от навешивания какого-либо JS в качестве фронта. Мотивируя тем, что пользователь сам должен выбрать, что ему лучше использовать, особенно, когда популярность JS-фреймворков/библиотек меняется в очень короткий период времени. И ИМХО - это правильный выбор. Performance на уровне.

Документация обширная, всё нужное есть на сайте (https://cakephp.org/). Есть даже русская версия (неполная), но лучше сразу на английском читать.

С ASP.Net будет сложно первое время, со старта, если в глаза не видел, въхать быстро не получится.

Stack77
()

Ща, возможно какашками начнут кидаться… Возможно для твоих целей подойдет какая-нибудь CMS. Я бы рекомендовал Joomla (её по какой-то причине не очень любят в русскоязычном сегменте, внятного ответа почему добиться ни от кого пока не смог). Или даже не CMS, а сам фреймворк Joomla, но это лишнее, мне кажется.

Авторизация из коробки, множество готовых плагинов/компонентов/модулей. Сам движок позволяет отключить всё ненужно в выводе (все базовые скрипты и т.д. можно не выводить). Достаточно написать свой шаблон (бутстрап например последней версии, или на свой вкус) и разработать свой компонент под свои задачи. Структура MVC - замечательная.

Я на Joomla делал Интернет-магазины с обширным набором параметров, один был (и сейчас работает, правда с меньшим набором, по причинам ассортимента) с требованием более до 500к товаров и в каждом от 0 до 50 атрибутов. Т.е. в общей сложности записей в БД было дохера. Пришлось, конечно с ключами в Mysql поработать, переписать пагинацию и поиск. Но всё это работало и работает на VPS за 500 рублей. Пользователей не сказать чтобы много у магазина, но достаточно, от 5к в сутки. И это было около 7 лет назад. Всё работает по сей день. А движок обновляется одной кнопкой в панели администрирования.

Это история для адептов фразы «на Joomla в 2к20? Вы с ума сошли!» :D

Stack77
()

Про python

Есть всякие django/flask и т.д., а есть ещё cookiecutter, что не менее удобно, меньше нужно ручками делать.

ggrn ★★★★★
()

Чтобы сильно не заниматься расточительством внимания, просто как и в прошлый раз другому регистранту посоветую тебе poco https://pocoproject.org/docs/index.html в принципе в нем достаточный баланс из «делать все совсем самому и максимальная гибкость» и «тут кое-что есть и я могу это переиспользовать». С++ опять же, не надо бегать по стекам, ну и вроде как будет не скучно реализовывать свою, не такую как все реализацию проекта беспечной радости увядающей молодости.

anonymous
()

Node.js еще не указывали - если хочется фронт и бэк на JS писать. В общем, да, тема достаточно холиварная. Как правильно заметил e1nste1n - практически любой web-фреймворк имеет возможности для реализации задач из топика.

Stack77
()

Laravel одновременно простой, мощный, и популярный, все что нужно уже имеется:

А Livewire + Tailwind которые будут использоваться совместно с Laravel, избавят тебя от работы на фронтенде.

paramon
()
Последнее исправление: paramon (всего исправлений: 1)
Ответ на: комментарий от paramon

Laravel одновременно простой, мощный, и популярный

Я бы на нем не советовал делать крупный проект, как по объему кода, так и Big Data. По простоте и популярности - согласен.

Stack77
()
Ответ на: комментарий от Stack77

У меня мощный = выразительный, уж не знаю на чем можно быстрее разрабатывать.

Я бы на нем не советовал делать крупный проект, как по объему кода

???

так и Big Data

Ну это логично, хотя он и не настолько тормоз по сравнению с остальными https://www.techempower.com/benchmarks/

paramon
()
Ответ на: комментарий от paramon

???

Плохой стиль. Статические вызовы, запросы к БД прямо из контроллеров/etc. Даже в примерах такая «лапша», ну и не только. Если всё это повыбрасывать и не пользоваться, то от фреймворка пшик останется, можно смело брать Symfony, разницы не будет.

Stack77
()
Ответ на: комментарий от Stack77

Да отличный стиль, зачем же все в классы заворачивать?

Если всё это повыбрасывать и не пользоваться, то от фреймворка пшик останется, можно смело брать Symfony, разницы не будет.

Я заметил все кому Laravel не нравится что нибудь подобное говорят %) Из последнего помню «Yii2 тоже самое что и Laravel только лучше и быстрее». А ведь разница огромная, экосистема круче, встроенные компоненты лучше, практически что угодно открываю что бы сравнить, у Laravel это функциональнее и/или красивее в коде будет. А чего то у остальных фреймворков и вовсе нету.

Хотя остальные фреймворки я не использовал, может чего то упускаю.

paramon
()

Присоединюсь к первой рекомендации (asp .net core). Но въехать быстро не получится, это факт.

Если надо быстро-быстро - node.
Там +- пару основных подходов все используют.

FortyTwo
()

Предположим, я хочу сделать веб-приложение с пользователями, сессиями и авторизацией (ну там новый багтрекер, или что ещё для коллективной работы/общения), и я не хочу писать эту авторизацию с нуля. Есть какая-нибудь библиотека под свободной лицензией, в которой это уже сделано, и программисту остаётся писать только прикладную логику?

Да, Java и Spring. Недавно с ним столкнулся по работе - вообще пушка, ощущение, что это магия.

Zhbert ★★★★★
()

Mojolicious.

Простой фреймворк с MVC, кучей плагинов на любой случай жизни. Осваивается очень легко. Что-то относительно небольшое можно написать на Mojolicious::Lite(упрощённая но всё-равно довольно мощная версия фреймворка - для начинающих самое то). В комплекте поставляется удобный отладочный сервер, подхватывающий любые изменения в коде/темплейтах на лету с отличным дебагом.

shell-script ★★★★★
()

Крайне не советую в это лезть. Если тебе ради интереса, а не ради заработка, то лучше взять микрофреймворк какой-нибудь, а не платформу для формошлёпия. Все эти прибитые гвоздями и навязывающие парадигму фреймфорки отвратительны.

WitcherGeralt ★★
()
Ответ на: комментарий от WitcherGeralt

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

anonymous
()

Любой современный фреймворк под любой современный ЯП в зависимости от твоего предпочтения.

anonymous
()
Ответ на: комментарий от Zhbert

Java и Spring. Недавно с ним столкнулся по работе - вообще пушка, ощущение, что это магия.

В смысле — никто толком не понимает, каким чудесным образом это все работает. Или не работает %)

Nervous ★★★★★
()

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

$query = "SELECT COUNT(*) FROM threads WHERE section_id = '$sect_id'";
$res = $db -> prepare($query);
$res -> execute();
$sect_threads_count = $res -> fetchColumn();
if($sect_threads_count == 0) {
	echo 'в этои разделе ' . $sect_name . ' нет тредов и сообщений';
	exit();								
}

XoFfiCEr ★★☆☆
()
Последнее исправление: XoFfiCEr (всего исправлений: 3)
Ответ на: комментарий от WitcherGeralt

Если тебе ради интереса, а не ради заработка, то лучше взять микрофреймворк какой-нибудь, а не платформу для формошлёпия.

Ну разверни мысль. Какие примеры этих микрофреймворков, есть ли в них решения для оперирования пользователями и сессиями, о чём я говорил в ОП…

hobbit ★★★★★
() автор топика
Ответ на: комментарий от hobbit

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

Flask — самый популярный микрофреймворк всех времён и народов, уже выше был. На остальное смотреть, наверное, не стоит, учитывая твои пожелания к «изкоробочности», иначе готовых решений будет на порядки меньше. Но если их отбросить, то вариантов станет очень много, а в случае с Go можно даже стандартной библиотекой обойтись.

Кстати, вот ещё пара вариантов из категории больших жирных фреймворков на все случаи жизни: Ruby on Rails и Sinatra (этот мне даже нравится).

WitcherGeralt ★★
()
Последнее исправление: WitcherGeralt (всего исправлений: 1)
Ответ на: комментарий от anonymous

Т.н. «наука» — это толпы лодырей, просиживающие штаны на государственные деньги, либо гранты от меценатов, в лучшем случае. Та малая элитная её часть, где действительно что-то полезное делают, имеет слишком сомнительные профиты для тех, кто непосредственно ей занимается (в противоположность тем, кто на них зарабатывает), чтобы тратить десятилетия, чтобы туда пробиться.

А я сайтики не пилю, если что, просто сталкивался и в курсе.

WitcherGeralt ★★
()
Последнее исправление: WitcherGeralt (всего исправлений: 1)

NextJS и делать на нем сразу PWA, а не просто сайт

romanlinux ★★★
()
Ответ на: комментарий от hobbit

вообще это на моем сайте написано, который в профиле.

Но поскольку вы топикстартер то отвечу:

  • будет создан свой posting.php какой есть в phpbb, все картинки чьи url указаны между bb-кодами [img] и [/img] планируется скачивать и с новым адресом они будут использоваться.
  • никаких прямых внешних ссылок в том же posting.php (и в сообщениях) отныне не будет, обязательно все через редирект, то есть ссылка будет на какой нибудь away.php
  • никаких rss и atom упаси гспди чтоб так контент воровали через эти каналы.
  • никаких viewforum и viewtopic - семантический url
  • админки не будет - сделать несложно, но нужна ли она? это дополнительная уязвимость я все таки для себя делаю мне не трудно открыть с помощью sprutio или по ftp конфигурационный файл, с 2 базами данных (sqlite) не намного сложнее. Две базы потому что одна для данных о форуме, а вторая для записи данных о посетителях страниц форума для статистики и дабы этим не перезагружать первую.
  • шифровать весь текст сообщений (но не названия тредов и разделов).
  • подфорумов не будет форум-разделы-треды с сообщениями
  • хитрости против спамеров о которых я не буду говорить
  • черные списки имен, ip-адресов, адресов e-mail

сейчас я разделы делаю пока всего 70kb (весь форум), но без смайликов и такого всего.

XoFfiCEr ★★☆☆
()
Последнее исправление: XoFfiCEr (всего исправлений: 2)
Ответ на: Это от anonymous

Это то что мне нужно, иди в свой детский сад.

XoFfiCEr ★★☆☆
()
Ответ на: комментарий от XoFfiCEr

никаких rss и atom упаси гспди чтоб так контент воровали через эти каналы.

На мой взгляд, ударит это в первую очередь по честным пользователям RSS, которые с его помощью получают новости и видят, куда надо зайти. А воры придумают ещё что-то хитроизвратное.

hobbit ★★★★★
() автор топика
Ответ на: комментарий от hobbit

В яблочко. Сейчас написать парсер даже для web-приложения с <div id="root"></div> и рендером всего в броузере - не проблема. А уж простой на python за 15 минут пишется.

Если хочется чтобы «не украли», тогда разделы закрытыми делай - других вариантов нет. Вообще, насчет написания форума на чистом php, считаю, это будет капец какой «велосипед», разве что время лишнее некуда девать. Без обид XoFfiCEr :)

Stack77
()
Ответ на: комментарий от hobbit

есть ли в них решения для оперирования пользователями и сессиями

Витчер ответил, но я конкретней по фласку.

https://pypi.org/project/Flask-User/

https://github.com/python-social-auth/social-app-flask-sqlalchemy

Я скоммуниздил (MIT) регистрационный код (подтверждение емэйла, забыл пароль, и пр.) из flask-user, и сессионную работу (куки там всякие) оттуда же. Я ничего этого сам не писал. (C) я (ну и там по ссылке чуть больше)

the1 ★★
()
Ответ на: комментарий от XoFfiCEr

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

Каждый начинающий РНР программист пишет свой движок :-)

dicos ★★
()
Ответ на: комментарий от dimuska139

Инъекции-то не будет?

$res -> execute();

Твоему приложению не страшны никакие инъекции, если оно не работает.

Nervous ★★★★★
()

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

Написание проекта качественно без фреймворков и прочего требует достаточно хороших навыков программирования и знания шаблонов проектирования. Да и много слишком придётся писать руками. Так что вариант «нативный код» отметаем.

Пилить багтрекер на CMS, мне кажется, бредовая затея. Так что остались микрофреймворки и фреймворки - выбираем из этого. Если ты решил поделить фронтенд и бэкенд (то есть бэкенд - API, а фронт - это какой-нибудь React), то фреймворки могут показаться несколько избыточными. Ведь, например, тот же шаблонизатор уже нафиг не нужен, т.к. гоняем json, а не html.

Если говорить о микрофреймворках, к которым мы и пришли, то для всех них есть готовые библиотеки для реализации авторизации. Если php, то я бы посоветовал PHP Slim. Если python, то Flask/FastAPI. Насчёт JAVA ничего не скажу, а вот Go я бы не посоветовал для таких задач.

dimuska139 ★★
()
Ответ на: комментарий от XoFfiCEr

Классический говнокод на пхп.

оказалось что это какое то сплошное нагромождение sql запросов

Не надо так делать…

На пхп можно писать и нормальный код. Поделить код на слои.. Использовать MVC..

Tanger ★★★★★
()
Ответ на: комментарий от Tanger

На пхп можно писать и нормальный код.

Звучит как «и говном можно нарисовать шедевр». Можно, не вопрос.

Nervous ★★★★★
()
Ответ на: комментарий от Nervous

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

dimuska139 ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.