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) (linux.org.ru) я (ну и там по ссылке чуть больше)

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
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.