jiisoft / jii

Full-Stack JavaScript Framework architecture based on PHP Yii Framework v2
MIT License
244 stars 16 forks source link

Features #10

Open affka opened 9 years ago

affka commented 9 years ago

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

Предлагайте свои пожелания - чего вам хотелось бы видеть в Jii в первую очередь?


Фичи, о которых говорили:

lazitskiy commented 9 years ago

Всем привет. Даже хз что советовать то пока. С кондачка не охота что-либо говорить. Пожалуй, перенесу я свой рисовач.ру на jii , там работы на пару дней, тогда и фидбек хоть какой-нибудь появится. Что касается пунктов и, если рассматривать jii как продукт, то я бы расставил так по приоритетам:

  1. Валидация форм. Command line tools: migrations, gii
  2. Драйвера
  3. webkit, phonegap
  4. es6 классы бы совсем на данном этапе выбросил.

Поясню:

  1. Мы все привыкли к валидации форм, что тут обсуждать. Думаю это высший приоритет. Далее миграции, в мало-мальской какой команде встает потребность в миграциях. МОжно подумать, что впервее: миграции или scaffolding? Я все таки к миграциям склоняюсь. scaffolding - этакая плюха зрелого фреймворка.
  2. Драйвера.
  3. Про вебкит вообще можно забыть. Его кроме меня ктото использует :)? Хотя было бы прелестно иметь нормальный клиетский фреймворк. Вы видели какой бардак у них творится, вон - https://github.com/tastejs/todomvc/tree/master/examples . React вообще отжег, гляньте с 29 строки https://github.com/tastejs/todomvc/blob/master/examples/react/js/footer.jsx Я не говорю, про их поделки плохие, просто мне как web разрабу, непонятно, зачем вместо MVC юзать модель+коллекцию моделей и view + composite view это я для backbone пишу. То бишь у них ::find() - это model , а findAll() - вдруг стала Collection. Соответственно нужно городить 2 разных файла https://github.com/tastejs/todomvc/blob/master/examples/backbone_marionette/js/TodoMVC.Todos.js По ссылке они напихали это в один файл - что еще больше бардак, чем в 2.

Аналогично со view https://github.com/tastejs/todomvc/blob/master/examples/backbone_marionette/js/TodoMVC.TodoList.Views.js . Есть ItemView и CompositeView также напихана в 1 файл. Но тут палка с дмумя концами(правильно пишется ведь так :)?) Если на сервере я моуг позволить в URL admin/city/new показать форму добавления города, то могу ли я на клиенте при нажатии кнопкии "добавить город" проставлять хеш index.php#city/new чтобы сработал контроллер и дернул соответствующую вьюху? Ладно, можно много писать. Как дело дойдет до клиентского, тогда побеседуем.

Однако, если решение будет адаптация для webkit и phonegap , то пункт 2 надо повыше поднимать, хотя бы sqlite для быстроты, а дальше nosql прилепится.

  1. es6 классы - ну это супер спорно. Реализовывать это для 1% людей, которые 100% не будут использовать фреймворк в продакшоне, потому что они настолько круты( раз предлагают es6 , значит типа разбираются в вопросе), что любая нехватка функционала или немажорная цифра в версии не позволит им включить Jii на продакшон. Я думаю на es6 можно положить большой болт.

З.Ы А в es6 как дела с неймспейсами, насколько я помню, их там вроде не было.

Че, как думаете? А ты, Тема?

affka commented 9 years ago

могу ли я на клиенте при нажатии кнопки..

Сейчас роутинга для клиента нет (в текущей версии Jii), но он был в первых версиях Jii - его просто адаптировать нужно под новый код. Если кто хочет заняться - могу скинуть наработки.

Однако, если решение будет адаптация для webkit и phonegap

Адаптиция к node-webkit и phonegap однозначно нужна. Sqlite не долго делать, его в первую очередь можно и делать.. Кое кто уже даже взялся вроде, хотя я результата еще не видел.

es6

да, неймспейсов там нет.

А ты, Тема? Если это вопрос "Артем я или нет" - то нет :)

Валидацию форм пока на второе место ставлю, т.к. там не много работы.. основные валидаторы уже есть.

igogo5yo commented 9 years ago

es6

да, неймспейсов там нет.

Там по идее это можно обойти в виде модулей, но по моему тогда теряется возможность использовать классы. Можно использовать например coffescript.

Валидация форм. Command line tools: migrations, gii.

Сейчас занимаюсь Command line tools, постараюсь на днях выкатить как минимум ядро, а дальше уже останется только написать контроллеры: migrations, gii и т.д.

Фичи, о которых говорили:

Я бы предложил еще в данный список добавить поддержку рендеринга React, он сейчас очень популярен в JS кругах, очень много людей хотят его использовать особенно в nodeJS проектах, в отличии от того же twig. ИМХО.

affka commented 9 years ago

Там по идее это можно обойти в виде модулей

да, попытаться можно, но это смена одного костыля на другой + нейспейсы - это не все, что мне нужно.. В Jii используется моя собственная реализация классов - https://github.com/affka/neatness. Там же можно увидеть все возможности, которые мне нужны и в Jii. Синтаксис, кстати, немного похож на новые версии secnha, как оказалось, хотя я ни под что не затачивал, просто совпадение.

Сейчас занимаюсь Command line tools

круто, ждем! :)

Я бы предложил еще в данный список добавить поддержку рендеринга React

добавил React в список. Речь только о клиенте? или рендеринг на сервере в том числе?

igogo5yo commented 9 years ago

добавил React в список. Речь только о клиенте? или рендеринг на сервере в том числе?

На клиенте, на сервере, в phoneGap, в node-webkit! React везде будет работать без проблем :)

avil13 commented 9 years ago

[в процессе] Command line tools: migrations, gii

Про миграции написано, что они в работе. А можно посмотреть или присоединиться?

affka commented 9 years ago

@igogo5yo, выложи в репозиторий jii/jii-cli то, что уже есть

igogo5yo commented 9 years ago

Готова пока некая базовая обертка для cli и на 60% рабочий help Сегодня постараюсь закончить help и вылью то что есть

Screenshot

affka commented 9 years ago

Клева, ждем!)

avil13 commented 9 years ago

а исходников нет ни в каком виде пока для ознакомления? Охота посмотреть как вы уже реализовали работу с cli

igogo5yo commented 9 years ago

а исходников нет ни в каком виде пока для ознакомления? Охота посмотреть как вы уже реализовали работу с cli

Сейчас вылью если так не терпится :)

igogo5yo commented 9 years ago

Вылил исходники того что на данный момент есть. Давайте все обсужедния по jii-cli вынесем в тот репозиторий что бы было комфортней. И еще, я в коде все назвал - console, так как репозиторий назывался изначально jii-console В дальнейшем простой переименуем в cli. Ну или репу переименуем в jii-console, по этому поводу стоит еще поспорить, так как в yii все же фигурирует название console, но cli приятней писать :)

igogo5yo commented 9 years ago

Вообщем друзья, есть cli функционал (возможно с багами), осталось написать базовые контроллеры (gii, migrate, message, fixture, asset, cache)

@affka assets нет смысла делать, т.к. они устроены в Jii по-другому, не как в Yii.

Я сейчас начну заниматься покрытием тестами того что я написал, если у кого-то есть желание, то берите любой базовый контроллер и начинайте реализовывать :)

affka commented 9 years ago

assets нет смысла делать, т.к. они устроены в Jii по-другому, не как в Yii.

igogo5yo commented 9 years ago

Отредактировал то что написал выше что бы не сбивать с толку людей.

affka commented 9 years ago

Удалил зависимость when, перевел все на нативный Promise.

lazovix commented 9 years ago

Добрый! Установил jii-boilerplate-hello роутинг не работает...

affka commented 9 years ago

Спасибо, поправил! :)

lazovix commented 9 years ago

Добрый...! jii-boilerplate-basic: Ошибка при запуске если прописать псевдонимы (aliases) в конфигурации. jii-boilerplate-hello: Не понятно как работают assets, в main.ejs прописал <% app.assets.AppAsset.register(this); %>, AppAsset есть и прописан в конфиге. При загрузке в браузере в коде станицы появляется link href="//assets/app-11856386643.css" rel="stylesheet"???

Как то динамически можно assets формировать? А планируется дальнейшее развитие проекта?

affka commented 9 years ago

jii-boilerplate-basic можно пример кода? Или трейс ошибки?

Не понятно как работают assets Asset устанавливал/подключал? - require('jii-assets'); Динамически AssetBundle сделать не получится, т.к. каждый раз прийдется перезагружать gulp. Идеология такая - в бандлы записываем нужные файлы (которые могут подключать другие файлы в common js стиле через require(), для этого нужно задать флаг commonJs=true), которые компилируются в статичные файлы (для продакшена - минифицируются, для разработки - обновляются при изменении файлов (watch)).

Проект развивается, но очень медленно, т.к. его развитие сейчас завязано на меня, а у меня практически отсутствует свободное время. Но при малейшей возможности я его пишу.. сейчас пишется comet клиент-сервер..

lazovix commented 9 years ago

jii-boilerplate-basic: Код: Jii.createWebApplication({ application: { basePath: __dirname, components: { .... }, aliases: { '@foo': '/path/to/foo', '@bar': 'http://www.example.com' } } });

Ошибка: d:\Projects\nodejs\jii-boilerplate-basic\node_modules\jii\lib\Jii.js:399 throw new Jii.exceptions.InvalidConfigException('Config param ' + key + ^ Jii.exceptions.InvalidConfigException: Config paramaliasesis undefined in objectJii.application.WebApplication`. at Function.Neatness.defineClass.__static.configure (d:\Projects\nodejs\jii-boilerplate-basic\node_modules\jii\lib\Jii.js:399:13) at Jii.defineClass.constructor (d:\Projects\nodejs\jii-boilerplate-basic\node_modules\jii\lib\base\Object.js:49:8) at null. (d:\Projects\nodejs\jii-boilerplate-basic\node_modules\jii\node_modules\neatness\src\extendClass.js:79:23) at null. (d:\Projects\nodejs\jii-boilerplate-basic\node_modules\jii\node_modules\neatness\src\extendClass.js:135:15) at Jii.base.Object (eval at (d:\Projects\nodejs\jii-boilerplate-basic\node_modules\jii\node_modules\neatness\src\extendClass.js:36:28), :1:59) at Jii.defineClass.constructor (d:\Projects\nodejs\jii-boilerplate-basic\node_modules\jii\lib\base\Component.js:41:16) at null. (d:\Projects\nodejs\jii-boilerplate-basic\node_modules\jii\node_modules\neatness\src\extendClass.js:79:23) at null. (d:\Projects\nodejs\jii-boilerplate-basic\node_modules\jii\node_modules\neatness\src\extendClass.js:135:15) at Jii.base.Component (eval at (d:\Projects\nodejs\jii-boilerplate-basic\node_modules\jii\node_modules\neatness\src\extendClass.js:36:28), :1:62) at Jii.defineClass.constructor (d:\Projects\nodejs\jii-boilerplate-basic\node_modules\jii\lib\base\Context.js:42:8)

lazovix commented 9 years ago

jii-boilerplate-hello: Asset устанавливал/подключал? - require('jii-assets'); - Да! откуда берется в итоговом HTML link href="//assets/app-11856386643.css" rel="stylesheet"???