Flexberry/rfcs

Изменить шаблон генерируемого ember-flexberry приложения

KollegOFF opened this issue · 1 comments

Изначальной задачей было введение какого то разделения, для растущего числа различных миксинов и компонентов, на актуальные, и нет.

Хочу ввести что-то типа «пространства имен», для классов и объектов, из аддонов ember-flexberry..., в генерируемом приложении.

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

Например, для контроллера это должно получиться примерно так:

// app/controllers/flexberry/edit-form.js
import EditFormController from 'ember-flexberry/controllers/edit-form';
export default EditFormController.extend({
});

// app/controllers/application-user-e.js
import EditFormController from './flexberry/edit-form';
export default EditFormController.extend({
});

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

Есть проблема с компонентами, по правилам именования, имя компонента должно содержать минус, при этом директория, в которой находится компонент, не учитывается.
Получается что нельзя создать компонент с именем {{flexberry/file}}, а в имени {{flexberry/flexberry-file}} слишком много flexberry.
В текущей версии ember-cli, используемой в аддонах ember-flexberry..., это правило не валидируется в полном объеме, и можно создать компонент с именем {{flexb-berry/file}} или {{flexberry/-file}}, но не думаю что этим хаком стоит пользоваться.

По поводу именования компонентов, можно заменить flexberry в имени компонента на что то семантическое, пример {{flexberry/field-file}}, {{flexberry/input-field}}