-
Notifications
You must be signed in to change notification settings - Fork 84
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
Added support for YModules with backward compatibility #606
base: dev
Are you sure you want to change the base?
Conversation
Great thing! 👍 I'm already want to get it ;-) |
@rakchaev How and when to use it? |
@arikon
We write js files from own bem levels with YModules.
|
@rakchaev But how do you use it? You just write own project blocks using |
@@ -0,0 +1,19 @@ | |||
// Realization from bem-core#2.5.0 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Realization -> Implementation
It will be more correct (here and in the other files)
@arikon Yes. We just write own project blocks using ym. Like blocks of |
@zxqfox The rule is simple: this code is harder to understand for the ordinal reader than simple I don't support some of the decisions made for |
|
||
/** | ||
* @module i-bem__dom_init | ||
*/ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These style @module
comments are not used in bem-bl
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I've found usage of @module
comments in bem-bl
:
./blocks-common/i-jquery/__debounce/i-jquery__debounce.js: * @module i-jquery__debounce
./blocks-common/i-jquery/__decodeuri/i-jquery__decodeuri.js: * @module i-jquery__decodeuri
./blocks-common/i-jquery/__observable/i-jquery__observable.js: * @module i-jquery__observable
./blocks-common/i-geolocation/i-geolocation.js: * @module i-geolocation
./blocks-common/i-ecma/__json/i-ecma__json.js: * @module i-ecma__json
./blocks-common/i-ecma/__function/i-ecma__function.js: * @module i-ecma__function
./blocks-common/i-ecma/__string/i-ecma__string.js: * @module i-ecma__trim
./blocks-common/i-ecma/__object/i-ecma__object.js: * @module i-ecma__object
./blocks-common/i-ecma/__array/i-ecma__array.js: * @module i-ecma__array
./blocks-common/i-menu/i-menu.js: * @module i-menu
./blocks-common/i-bem/i-bem.js: * @module i-bem
./blocks-common/i-bem/__internal/i-bem__internal.js: * @module i-bem__internal
./blocks-common/i-bem/__dom/_init/i-bem__dom_init.js: * @module i-bem__dom_init
./blocks-common/i-bem/__dom/i-bem__dom.js: * @module i-bem__dom
./blocks-common/b-menu-vert/__trigger/b-menu-vert__trigger.js: * @module b-menu-vert
./blocks-common/i-system/i-system.js: * @module i-system
@rakchaev What do you think of |
@arikon Yes, we can replace it. |
@arikon I'm for wrapping that block to |
bem-bl and bem-core are separate code bases. I think there is no need to focus on future syncronization (that would not happen at all). 13.02.2015, 19:50, "Alexej Yaroshevich" notifications@github.com:
Отправлено из мобильной Яндекс.Почты: http://m.ya.ru/ymail |
@dfilatov could you review plz? there are doubts that we can accept this pr as is |
I think you shouldn't want this ) It's just increasing the entropy, nothing more |
@zxqfox blocker for what? |
@dfilatov For mergin' |
If I were maintainer I wouldn't merge |
@dfilatov Thank god you are not ;-) upd Ловлю себя на мысли, что я бы тоже не влил ;-) Что если унести на отдельный уровень эти правки и подключать уровень только при необходимости? В отдельную библиотеку уносить тоже вариант, но в bem-bl такое не принято. |
@arikon what do you think? |
@dfilatov Дима, прокомментируешь реализацию? 19.02.2015, 16:47, "Filatov Dmitry" notifications@github.com:
Отправлено из мобильной Яндекс.Почты: http://m.ya.ru/ymail |
polite ping @dfilatov |
@zxqfox I can't add to what I said anything else. |
@dfilatov Дима, причины идеологические или технологические? |
I like this feature. +1 for merge. |
+1 |
@rakchaev @corpix @Andre-487 вы можете описать, про какие именно «преимущества модульной системы» идет речь, с учетом того, что:
Что мешает начать, учетом перечисленного выше, начать использовать modules.define('my-block', function(provide) {
provide(BEM.DOM.decl('my-block', {···});
}); На мой взгляд, ничего кроме увеличения сложности и запутанности кода, этот pr (речь про пользователей внутренних библиотек) не привносит. Пример про «запутанность»: // islands/blocks/button.js
BEM.DOM.decl('button', {
doSomething() {
···
}
});
// prj/blocks/my-block1.js
modules.define('my-block1', ['i-bem__dom'], function(provide, BemDom) {
provide(BemDom.decl('my-block1', {
doSomethingMore() {
//! этот код может нормально работать —
// блок `button` задекларирован вне ym и код его `decl`'а уже выполнился к этому моменту!
this.findBlockInside('button').doSomething();
}
}));
});
// prj/blocks/my-block2.js
modules.define('my-block2', ['i-bem__dom'], function(provide, BemDom) {
provide(BemDom.decl('my-block2', {
doSomethingMore() {
//! а вот тут никто `my-block1` в массив зависимостей (2й аргумент define) не добавил —
// вообще не факт, что этот код будет работать
this.findBlockInside('my-block1').doSomethingMore();
}
}));
}); |
Я не знаю о каких преимуществах идет речь, но этот фикс позволяет начинать писать блоки в рамках ymodules, и постепенно переводить с i-bem из bem-bl на i-bem из bem-core. Про внутренних пользователей я ничего не знаю, но как-то странно это обсуждать в публичном репе. upd Пример хорош для «порезался об ножницы — нужны царапки», имхо. |
Да, действительно смысл в облегчении миграции с bem-bl на bem-core. |
Я готов поспорить, что количество людей которые про это даже не задумаются (не то, чтобы попытаются понять), будет соразмерима с количеством людей которые не понимают зачем писать
Возможно я не понимаю, но в чем упрощение? Проекту прямо сейчас можно начать использовать ym: modules.define('my-button', function(provide) {
provide(BEM.DOM.decl('my-button', {···});
}); Чем драматически помогает наличие |
Да нет смысла об этом спорить. Просто есть люди, которым надо переезжать, а есть те, которых и так все устраивает.
Тем, что когда все блоки будут описаны таким образом, можно будет, грубо говоря, сделать - |
@zxqfox тебе ли не знать, что заворачивание блоков в модульную систему — это самая простая задача из тех, с которыми придется столкнуться при миграции с |
Да это понятно, просто без таких правок (даже самых простых) переезжать постепенно становится невозможно. Можно, впрочем, вдобавок сделать в bemhtml: |
Просто я не думаю, что можно взять и просто заменить |
|
Привет!
Инициализация блоков (запуск
Привносит пользователям библотеки:
Инициализация всех блоков выполнится только после резолва всех объявленных модулей, у которых в зависимостях есть |
В итоге, чтобы использовать на своем проекте модульную систему |
Added possibility to use YModules in js files from own bem libraries based on bem-bl.