@bizbilder

Что необходимо для современного веб-фреймворка?

Работаю несколько месяцев над созданием веб-фреймворка на С++ (как Phalcon но без зависимости от Zend), к сожалению сейчас не могу похвастаться исходником, хочу узнать мнение о том что есть хорошее в фреймворках и что необходимо для современного веб-фреймворка.

Спасибо Всем!

P.S.- за основу взят CodeIgniter.
  • Вопрос задан
  • 319 просмотров
Пригласить эксперта
Ответы на вопрос 5
saboteur_kiev
@saboteur_kiev Куратор тега Веб-разработка
software engineer
Хорошая документация
Ответ написан
Комментировать
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
что есть хорошее в фреймворках

- принцип единой ответственности
- принцип открытости/закрытости
- принцип подстановки Барбары Лисков
- сегрегация интерфейсов
- инверсия зависимостей (не путать с dependency injection)

за основу взят CodeIgniter.

это путь в никуда.
Ответ написан
gzhegow
@gzhegow
aka "ОбнимиБизнесмена"
О блин, первый ответ меня убил. Каких еще умных слов напишут full-stack mega developers & super duper architectors, that have billion salary about that're using a lot of intellectual words.

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

Есть еще кодеры от слова "Тру", которые предпочитают новичку рассказывать три дня о том, как ставить "пакеты" и настраивать "зависимости" и что у них потом "приложение" даже получается, которое знай себе "Хелло, Ворлд!" выводит. И мы никогда не поймем друг друга.

Что до того, что начинать с CI глупо - тут да, они делали что-то очень простое но и в нем умудрились перемудрить. 10 конфиг файлов забитых какими-то редко-используемыми настройками уже о многом говорит.

Мне лично в фреймворке нужны:
** Простой роутинг - регулярки, в него сразу вкинуть обработку языков и обратную генерацию ссылок. Честно мне редко нужны были роуты в файле - я их всегда в базу перетаскивал, страницы создавать легче было в навикате, чем постоянно редактируя сначала роуты, потом контроллеры, потом создавая действия....
** Под этот роутинг разработанная исходная БД с языками (локалями), страницами (с путями к видам) и сессиями пользователей
** Вместо экшенов и контроллеров оставить одни только контроллеры, которые просто могут вкладываться друг в друга неограниченное число раз. Не забыть, что контроллеры нужна возможность хранить в разных файлах, в любой структуре папок
** Понятная система работы с БД и генерация кода моделей. Причем таким образом, чтобы генерировалась "исходная модель", а новую ты создавал на базе исходной, чтобы твои изменения каждый раз не затирались. Идеальная модель - это массив с заранее вбитыми в нее полями и дефолтными значениями. Обычный себе PHP массив. Главное, чтобы при выводе и работе с ним тебе не нужно сначала делать его массивом, чтобы просто удобно его просматривать.
** Есть такая практика - всю работу с моделью засовывать в модель. Ничего не могу сказать. Но для каждого модуля на сайте у меня всегда были собственные сообщения об ошибках. Поэтому реализовывать единую систему "валидации данных в модели", и потом сражаться с топорным:
Система сообщает:
1) Имя пользователя должно быть 1-30 символов
2) Имя пользователя не может содержать...

Зачем? Ошибки пишутся в самом модуле - если это модуль авторизации - напишите, что "Авторизация не удалась, введите так-то".
** При поиске с БД не забыть что иногда нужны а) связи и б) вложенные условия, соединяемые через И/ИЛИ
**
** Побольше разных наследований (в языках например - когда есть язык по умолчанию и есть несколько уровней на которых человек язык может выбрать - куки, база данных, программно-установленный, выбранный на сайте или введенный в адресную строку)
** Языки достаточно хранить в одном файле для каждого языка разделяя их через cat__lang и в формате json, чтобы легко подгружались из JS
** Модульность - это чтобы была возможность готовые библиотеки подключать быстро и легко, соответственно и писать их запросто
** Готовая авторизация (которая к слову занимает один файл в 200 строк, а не как у многих - сессии свои напишут, какие-то флеш сообщения напишут, "стэйты", а по итогу регистрацию все равно заново пиши)
** Ну при хороших раскладах конечно приятно иметь еще миграции всякие, для совсем уж крупных проектов, где базу удалить и закачать заново - работа двух дней

На что наплевать:
Комьюнити? В попу комьюнити. У вашего комьюнити каждый раз надо выпросить (читай - высосать, ублажить) желание помочь, ну или ждать по неделе, пока соблаговолите слезть со своих башен). О у меня даже было, один такой комьюнити-бой сказал - "я говорит, тебе не помогу, потому что мне не нравятся твои взгляды." Он полчаса учил меня жить, а в конце сказал, что у него нету 5 минут, чтобы просто сказать мне как делается то что я просил.

Документация? Ну как бы и да и нет. Если у тебя ф-ворк простой как бутылка - не надо писать эти километры и стены текста - кроме дрочева на них тех людей, кто любит все изучить и знать - толку не будет. На ф-ворке должны делаться простые операции, все остальное создается под заказ.

Встраивание в код всяких библиотек - бутстрапов разных, типа популярных, ангуляров и тд - в жопу. Кто хочет - добавит.

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

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

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

Just, be simple.
Ответ написан
Комментировать
sim3x
@sim3x
Community
Ответ написан
Комментировать
DJZT
@DJZT
Laravel - code for you
Laravel. Там должен быть реализован laravel)))
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы