Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Index module should provide functions instead of techs #76

Open
blond opened this issue Oct 31, 2014 · 13 comments
Open

Index module should provide functions instead of techs #76

blond opened this issue Oct 31, 2014 · 13 comments

Comments

@blond
Copy link
Member

blond commented Oct 31, 2014

Сейчас конфиг пестрит обилием квадратных скобок.

var techs = require('enb-bem-techs');

nodeConfig.addTechs([
    [techs.levels, { levels: ['blocks'] }],
    [require('enb/techs/file-provider'), { target: '?.bemjson.js' }],
    [techs.bemjsonToBemdecl],
    [techs.depsOld],
    [techs.files],
    /* ... */
]);

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

var bem = require('enb-bem-techs'),
    useTech = require('enb-bem-techs/lib/use-tech'),
    provide = useTech(require('enb/techs/file-provider'));

nodeConfig.addTechs([
    bem.levels({ levels: ['blocks'] }),
    provide({ target: '?.bemjson.js' }),
    bem.bemjsonToBemdecl(),
    bem.depsOld(),
    bem.files(),
    /* ... */
]);

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

var bem = require('enb-bem-techs'),
    useTech = require('enb-bem-techs/lib/use-tech'),
    provide = useTech(require('enb/techs/file-provider'));

nodeConfig.addTechs([
    bem.levels(['blocks']),
    provide('?.bemjson.js'),
    bem.bemjsonToBemdecl(),
    bem.depsOld(),
    bem.files(),
    /* ... */
]);
@blond blond self-assigned this Oct 31, 2014
@blond blond added this to the 0.1 milestone Oct 31, 2014
@blond
Copy link
Member Author

blond commented Oct 31, 2014

/сс @tadatuta @arikon

@tadatuta
Copy link
Member

так, конечно, выглядит красивее, но не боишься сделать изучение инструмента слишком сложным из-за обилия абстракций?

@arikon
Copy link
Member

arikon commented Nov 1, 2014

Можно это делать опциональным

31.10.2014, 23:00, "Vladimir Grinenko" [email protected]:

так, конечно, выглядит красивее, но не боишься сделать изучение инструмента слишком сложным из-за обилия абстракций?


Reply to this email directly or view it on GitHub.

Отправлено из мобильной Яндекс.Почты: http://m.ya.ru/ymail

@blond
Copy link
Member Author

blond commented Nov 1, 2014

@arikon, расскажи, пожалуйста, подробнее как реализовать это опционально?

@arikon
Copy link
Member

arikon commented Nov 2, 2014

@andrewblond

  • оставить возможность подключать модули технологий через require()
  • оставить возможность передать хешик со всеми параметрами в каждую технологию

@blond
Copy link
Member Author

blond commented Nov 2, 2014

оставить возможность подключать модули технологий через require()

Это всегда можно делать через require('enb-bem-techs/techs/tech-name');

Но получить объект с технологиями через var techs = require('enb-bem-techs') будет нельзя.

оставить возможность передать хешик со всеми параметрами в каждую технологию

Само собой.

@blond
Copy link
Member Author

blond commented Nov 5, 2014

Предлагаю поддержать оба варианта подключения технологий:

  1. require('enb-bem-techs/techs') — получаем объект с модулями технологий.
  2. require('enb-bem-techs') — получаем объект с функциями-технологиями.

@tadatuta
Copy link
Member

tadatuta commented Nov 5, 2014

мой поинт был в том, что вводится новая абстракция всего лишь ради избавления от скобочек.
решение с возможность писать и со скобочками и без, кмк, эту проблему не решает, а только усиливает — в инструменте появляется все больше сущностей, которые нужно изучить, чтобы начать пользоваться. вы уверены, что оно того стоит?

@blond
Copy link
Member Author

blond commented Nov 5, 2014

@tadatuta Кажется, что для пользователей, которые просто используют технологии абсолютно всё равно как их вызывать, и как технологии работают внутри, лижбы всё было описано в примерах и везде работало одинаково.

Для тех же кто сам пишет технологии не составит проблем понять как это работает.

@blond
Copy link
Member Author

blond commented Nov 11, 2014

После обсуждения с @mdevils решили отложить до лучших времён =)

@blond blond closed this as completed Nov 11, 2014
@blond blond added the wontfix label Nov 11, 2014
@blond blond reopened this Feb 11, 2015
@blond blond removed this from the 1.0 milestone Feb 11, 2015
@blond blond removed the wontfix label Feb 11, 2015
@blond
Copy link
Member Author

blond commented Feb 11, 2015

Возможно лучшие времена настали? =)

Мы можем добавить подобное поведение «сбоку», положив подобные сахарные функции в файл отдельный файл.

var techs = require('enb-bem-techs'); // techs
var sugar = require('enb-bem-techs/sugar'); // sugar functions

@qfox
Copy link
Contributor

qfox commented Feb 11, 2015

@andrewblond Я думал, что мы это попробуем сделать в bem-components, если не пойдет — нафик. Но если хочешь более основательно — я не против ;-) Но есть риск, что опять скатимся в дискуссии о попугаях, которых сложно посчитать.

вы уверены, что оно того стоит?

@tadatuta Ради читаемости конфига — 100% да.

@blond blond added this to the 2.0 milestone Apr 18, 2015
@blond blond removed their assignment Jun 5, 2015
@tormozz48
Copy link
Contributor

@blond Насколько эта задача актуальна?
P.S. Я понимаю как это сделать, но много ньюансов насчет засахаривания опций и.т.д.

@blond blond added ready and removed backlog labels Jul 13, 2015
@blond blond self-assigned this Jul 22, 2015
@blond blond added in progress and removed ready labels Jul 22, 2015
@blond blond removed this from the 2.0 milestone Jul 22, 2015
@blond blond removed their assignment Jul 22, 2015
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants