Показать сообщение отдельно
  #1 (permalink)  
Старый 11.05.2015, 23:05
Профессор
Отправить личное сообщение для UIjs Посмотреть профиль Найти все сообщения от UIjs
 
Регистрация: 24.04.2015
Сообщений: 183

Новый фреймворк Mega
Ребят, давайте помогите мне придумать каких киллерфитч напихать в фреймворк этот. Я хочу сделать фреймворк на все случаи жизни решающий все проблемы пригодный везде везде, идеально сочитающийся с другими фреймворками например THREEjs. Чтобы был очень высокоуровневый но при том очень гибкий. Я хотел бы с вами его тут обсуждать, и отчиываться о том какие фитчи реализованы а какие нет. Так же есесино если кому идея понравится будем пилить вместе на гитхабе. В общем было бы офигенно использовать ваш опыт при его создании. А главное критику и недостатки которые я не могу заметить потому что со стороны то виднее).

Короче вот от меня фитчи че я хочу туда запихнуть (щас все абстрактно потому что как реализовать буду думать на следующей этапе)

1) Нужен ассинхронный рендеринг. Чтобы рисовалось только то, что должно отрисоваться на экране. Чтобы например список из 1000000 элементов рисовался мгновенно и рисовалась только та его часть которая сейчас видна на экране, но скроллеры при том и вся разметка должна вести себя так, как будто те элементы уже отрисованы.


2) Сверхбыстрый. Я вот думаю придумать какую то удобную модель данных, при том чтобы она имела такую штуку как "состояния" чтобы можно было сохранять состояние модели в JSON обьект. и восстанавливать его. Чтобы легко можно было делать ctrl + z грубо говоря. Активно должны использоваться сеттеры и геттеры. Это позволит нам мгновенно распространять взаимодействие между моделями. И если обнаружется что хоть какое то свойство всей общей модели данных изменилось, то эти изменения добавляются в очередь. Которая сканируется на наличие там изменений каждый requestAnimationFrame и рисуются (а модуль рисованися уже решает рисовать ли их физически или они не видны на экране и не нужно рисовать)


3) должна быть изоморфность. чтобы не дублировать логику на сервере и на клиенте. Чтобы писать один код а фреймворк сам разруливал что и где должно выполняться. Точнее вся логиа будет выполнятьяс и там и там. Бизнеслогика будет напирмер подсвечивать красным невалидный емейл. И этот же эмейл этим же алгоритмом проверки на валидность будет проверяться на сервере. Хотя сам алгоритм должен быть описан один раз. Предлагаю реализовать это в виде списков. Описываем такие сущности как списки и.т.п. и методы добавления в списки или выборки из них. И логику проверки там же. А фреймворк уже сам будет это с базой синхронить. Так же, по скольку у нас изоморфность, то этот же код летит и клиенту, и у него есть sql база в браузере. и если есть то тогда данные конкретного клиента должны там хранится и синхронится с серверными данными. И чтобы подгружались только изменения и была такая штука как версия данных. и.т.п. Для всего этого нужен бакенд на js, но он есть не у всех, по этому должна быть возможность использовать фреймворк только как клиентсайд, а сервер писать самому на чем угодно.


4) должна быть возможность удобной локализации интерфейса, например пишем в консоли mega.translate() и входим в режим переводчика и можем редактировать текст на сайте тыкая мышкой, и сохранить новый языковой пакет mega.translateEnd() и он предложит сохранимть JSON файлик с языком. Который фреймворк сам потом знает как подключить правильно и куда буквы расставить.


5) нужно чтобы фреймворк имел привязку не к размерам экрана а к пропорциям. Будем называть то типа фрймы. Описываем пропроции и даем этому фрейму имя "телефон" "планшет" "4:3" и далее можем или в стилях и в коде удобно использовать фреймсеты для верстки.


6) нужно придумать охеренную систему компонентов. придумать разные слои, взять лучшее от бем MCSS и.т.п. И все это применить к компонентам. Компоненты сайта должны состоять из шаблона логики и разметки. Компоненты должны легко мочь наследоваться друг от друга и расширяться. Надо придумать какой нибудь удобный способ описания компонентов, офигенный язык шаблонов компонентов чтобы можно было всякие рекурсии и ветвления описывать легко. А так же придумывать как наполнять сайт компонентами и как задвать им настройки. А так же как организовать взаимодействие между компонентами. Например у меня 10 чатов и вот этот вот один конкретный должен алерт делать при приходе сообщения. И.т.п.


7) Так же должен быть серверный рендеринг компонентов чтобы клиенту летела уже готовая страница. Но вся логика компонентов корректно зацеплялась за все эти развернутые перемешанные друг с другом шаблоны.


В общем надо собрать все лучшее из уже существующих фремворков соединить все это во едино и сделать лучше чем у них) иначе все это не имеет смысла.
Ответить с цитированием