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

В версии 0.4.0 стал неверно собираться клиентский bh с использованием bh-client-module #24

Merged
merged 5 commits into from Dec 22, 2014

Conversation

1999
Copy link

@1999 1999 commented Dec 15, 2014

В версии 0.4.0 поломалась сборка с использованием технологии bh-client-module и dependencies.
В версии 0.2.3 собранный файл выглядел примерно так:

modules.define('bh', ["module1"], function(provide, module1) {
  var BH = ...
  var bh = new BH();
    bh.setOptions({
        jsAttrName: 'data-bem',
        jsAttrScheme: 'json'
    });
    bh.lib.module1 = module1;

  bh.match(...);
  bh.match(...);
  bh.match(...);

  provide(bh);
});

В версии 0.4.0 так:

(function() {
  var BH = ...
  var bh = new BH();
    bh.setOptions({
        jsAttrName: 'data-bem',
        jsAttrScheme: 'json'
    });
    bh.lib.module1 = module1;

  bh.match(...);
  bh.match(...);
  bh.match(...);

  modules.define('bh', ["module1"], function(provide, module1) {
    provide(bh);
  });
})();

Это приводит к тому, что может быть ошибка module1 is not defined, поскольку он не загружен на момент выполнения кода bh.lib.module1 = module1. Этот пулреквест восстанавливает правильное поведение из 0.2.3


if (mimic) {
this._defineModule(mimic, file, depNames, libNames);
this._defineModule(mimic, file, ['bh'], ['bh'], null);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Почему mimic зависит от bh, а не от реальных зависимостей?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ну, насколько я понял, mimic - это что-то, имитирующее bh (к слову зачем тогда делается modules.define('bh')?). И проще сразу объявить его зависимость от bh, разве нет?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

к слову зачем тогда делается modules.define('bh')

При имитации должна оставаться возможность использовать модуль как bh в том числе.

И проще сразу объявить его зависимость от bh, разве нет?

Если bh модуль в коде после modules.define будет использовать зависимости, то код в mimic сломается.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Если bh модуль в коде после modules.define будет использовать зависимости, то код в mimic сломается.

Поясни? Вот у меня есть сейчас такое:

modules.define('bh', ['i18n'], function (provide, i18n) {
  bh.lib.i18n = i18n;
  provide(bh);
});

modules.define('mimic_bh', ['bh'], function (provide, bh) {
  provide(bh);
});

modules.require('mimic_bh', function (mimic) {
  console.log(mimic.lib.i18n); // ok
});

@arikon
Copy link
Member

arikon commented Dec 16, 2014

@andrewblond Андрей, а тестов на эту технологию нет? Мы со временем тоже хотим перейти на bh-шаблоны на клиенте. Не хочется, чтобы оно внезапно взрывалось ;)

@blond
Copy link
Member

blond commented Dec 16, 2014

@arikon, тестов в enb-bh пока нету совсем =(

@blond
Copy link
Member

blond commented Dec 18, 2014

@1999, кажется, что правильнее откатиться к варианту из v0.2.3 и просто добавлять в конце:

modules.define('mimic_bh', ['bh'], function (provide, bh) {
  provide(bh);
});

@1999
Copy link
Author

1999 commented Dec 19, 2014

Так ведь в этом и фикс. Сейчас так собирается.

@blond
Copy link
Member

blond commented Dec 19, 2014

@1999, сейчас это оборачивается в анонимную функцию, а можно весь код bh вставлять в modules.define('mimic_bh', ...` как это делалось раньше.

@1999
Copy link
Author

1999 commented Dec 20, 2014

@andrewblond поправил

@blond
Copy link
Member

blond commented Dec 22, 2014

@1999, спасибо большое! ;)

blond pushed a commit that referenced this pull request Dec 22, 2014
В версии 0.4.0 стал неверно собираться клиентский bh с использованием bh-client-module
@blond blond merged commit 0d42e89 into enb:master Dec 22, 2014
@blond
Copy link
Member

blond commented Dec 22, 2014

Изменения вошли в v0.4.1.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants