Giter Club home page Giter Club logo

docs's People

Contributors

alt-j avatar demetri0 avatar jt3k avatar kix avatar makishvili avatar pahaz avatar seyar avatar sigorilla avatar vovanr avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

docs's Issues

Рассказать про соответствие зависимостей в modules.define

dracowf [18:14] 
Ух ты! Не знал, что порядок в modules.define так важен!

makishvili [18:14] 
порядок чего именно?

dracowf [18:15] 
Так, сейчас. Объявления блоков, от которых зависят.

makishvili [18:16] 
Ты про массив во втором аргументе define и параметры анонимной функции в третьем аргументе?

makishvili [18:16]
что они должны соответствовать друг другу?

makishvili [18:16]
Или о чём-то ином?

dracowf [18:16] 
Их порядок да

dracowf [18:17]
Хм, похоже я поспешил с выводом, сейчас ещё раз проверю

dracowf [18:18]
А нет, всё правильно

dracowf [18:18]
Порядок важен

makishvili [18:19] 
важен-важен. Бывало не в том порядке объявишь параметры в функции, и всё ломается :simple_smile:

makishvili [18:20]
Из документации этот нюанс понятен или нет? Нужно отдельно на нём заострить внимание?

dracowf [18:20] 
modules.define(
    'flight-timetable-row',
    ['inherit',
        'block',
        '1',
        '2',
        '3',
        '4',
        '5',
        '6',
        '7',
        '8',
        '9',
        '10'
    ],
    function (provide,
              inherit,
              YBlock,
              10,
              9,
              8,
              7,
              6,
              5,
              4,
              3,
              2,
              1,) {

Будет всё наоборот)

makishvili [18:21] 
да, у тебя всё сломается )

dracowf [18:21] 
Аха :smiley: Ну оно было не совсем сломано, но когда глянул на названия всё перемешалось было забавно)))

dracowf [18:21]
Ладно, чего умничать, я думаю стоит рассказать в доке об этом :simple_smile: (edited)

makishvili [18:22] 
не сломалось, потому что твои 10 модулей почти одинаковы. А  когда они все — разные классы, тогда все быстрее ломается :))

Есть ли возможность создать блок со stylus библиотекой mixin и подключать его к другим блокам через deps?

К примеру есть у меня вот такая библиотека.
Создаю блок grid с технологией stylus куда её и пихаю.
Хочу подключить её к блоку example. Для этого в example.deps.yaml прописываю зависимость к блоку grid.
И вуаля, в стилях блока могу использовать mixin из библиотеки.
И мне не нужно создавать отдельный блок в технологии bt.js реализующий сетку, просто использую нужный mixin из grid к блоку example и его элементам.

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

Что вы думаете на этот счет? Не противоречит ли это общей концепции BEViS?

Нашёл небольшую нестыковку

К имени блока вместо конкретного вью добавьте маску *:

Было:

module.exports = function (bt) {
bt.match('input_large', function (ctx) {
// ...
});
};
Стало:

module.exports = function (bt) {
bt.match('input*', function (ctx) {
// ...
});
};
Но при этом надо добавить маску ещё и к:

bt.match('input*__control', function (ctx) {
// ...
});
Без этого не подтягиваются стили =) И интересный баг с крестиком происходит :)

Название input__control

После паузы, не сразу смог понять почему control =)

А в терминах BEViS поле формы представлено элементом блока, и имя этому элементу — control.
Перепишем методы:

getValue: function() {
    var control = this._findElement('control');
    return control.val();
},
setValue: function(value) {
    var control = this._findElement('control');
    control.val(value);
}

Возможно, text-field или что-то попроще? :)

Может неочевидный переход?

От

var clear = this._findElement('clear');
var control = this._findElement('control');

К

this._clear = this._findElement('clear');
this._control = this._findElement('control');

Объяснить =)

Неточности в примерах yblock.md

Давайте отредактируем pages/test-page/test-page.page.js, чтобы у вас получилось как у меня:

module.exports = function (pages) {
    pages.declare('test-page', function (params) {
        var options = params.options;
        return {
            block: 'page',
            title: 'test page',
            styles: [
                {url: options.assetsPath + '.css'}
            ],
            scripts: [
                {url: options.assetsPath + '.js'}
            ],
            body: [
                {
                    block: 'form'
                }
            ]
        };
    });
};

По-моему нужно:

{url: options.assetsPath + '.' + params.lang + '.js'}

=) И ещё, если в input.bt.js оставить так:

bt.setDefaultView('input', 'normal');

То стили не сработают, т.к. мы не прописывали для normal стили =)

а вот, если заменить на

bt.setDefaultView('input', 'large');

то работает! :)
Ну или создать отдельный стиль для normal =-)
И почему-то блюр помимо снятия фокуса ещё и удаляет инпут вообще.

this._greetingInput.blur();

И не срабатывает последовательное disable, а потом enable. =)
Спасибо за труды! Очень круто =)

Можно ли указать, какие шаблоны блоков нужно тянуть на front-end а какие оставить?

Сейчас все шаблоны склеиваются в один js файл вместе с логикой блоков что делает его достаточно тяжелым для загрузки на клиента.
Зачастую на клиенте не нужны все шаблоны блоков.
Нужны только те которые будут рендерится на нем.
Есть ли возможность как-то управлять тем какие шаблоны тянуть на front-end а какие нет?

Не получается создать тестовый проект

➜  work  git clone [email protected]:bevis-ui/bevis-stub.git your-project
Cloning into 'your-project'...
Warning: Permanently added the RSA host key for IP address '192.30.252.131' to the list of known hosts.
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

UPD

с HTTP-ссылкой заработало

➜  work  git clone https://github.com/bevis-ui/bevis-stub.git bevis-project
Cloning into 'bevis-project'...
remote: Counting objects: 252, done.
remote: Total 252 (delta 0), reused 0 (delta 0), pack-reused 252
Receiving objects: 100% (252/252), 71.17 KiB | 101.00 KiB/s, done.
Resolving deltas: 100% (79/79), done.
Checking connectivity... done.

Обновить FAQ

Я только разбираюсь в BEM/BEViS и ваш FAQ проявил действительно много деталей для меня. Но на сколько я понимаю он немного устарел, т.к. BEM не стоял на месте.
Было бы здорово увидеть свежий взгляд на сравнение BEM vs BEViS

Уточнить про шаблоны в "Три способа генерации блока"

Оказалось, что непонятно описал эту главу. @mckarty понял слова так, что не нужны никакие шаблоны, чтобы сгенерился HTML - мол только декларацию опиши в теле страницы и успех.

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

Битые ссылки в документации

Сначала ещё раз спасибо =) Очень большое за то, что могу учиться по вашим урокам.

Теперь немного того, что полетело в процессе вёрстки.
Битые ссылки:
Здесь: https://github.com/bevis-ui/docs/blob/master/how-to-make/css.md в конце.

Вот, что должно было у вас получиться.

https://github.com/bevis-ui/bevis-stub/tree/input-with-styles/blocks/input

И здесь: https://github.com/bevis-ui/docs/blob/master/how-to-make/yblock.md

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

https://github%20.com/bevis-ui/bevis-stub/blob/master/core/event-emitter/event-emitter.js

Вопросы: =)
1

_bindTo
Первый параметр — элемент или блок, на котором слушаем событие.

Никак не получается передать чистый блок, можно узнать каким образом это сделать? :)

2
Есть 3 одинаковых блока input. Допускает ли BEViS возможно по наведению на один из блоков, раскрасить все другие? Как ни стараюсь никак не могу понять, как это сделать.

this._bindTo(this._control, 'mouseover', this.hover);
this._bindTo(this._control, 'mouseout', this.nothover);

hover: function () {
                this._setState('hover');
                *МАГИЯ*
                this.emit('hover-success');
            },

            nothover: function () {
                this._removeState('hover');

Со вторым вопросом разобрался:

hover: function () {
          $('.' + ClassName.getBlockName()).addClass('_hover');
},

nothover: function () {
          $('.' + ClassName.getBlockName()).removeClass('_hover');
},

Ура! Разобрался с первым))), покопавшись в JSDoc'е =)

@example
         * var View = inherit(YBlock, {
         *     __constructor: function (model) {
         *         this.__base();
         *
         *         var hide = this._findElement('hide');
         *         this._bindTo(hide, 'click', this._onHideClick);
         *
         *         this._bindTo(model, 'change-attr', this._onAttrChange);
         *     }
         * });

Надо в конструктор передавать перменную =)

Как жить без миксин?

Допустим у меня есть блок кнопка, она замечательная, красивая, с богатым внутренним миром.
И я хочу вставить в страницу две такие кнопки но они будут выполнять совершенно разные задачи.
Будут ли эти кнопки одним и тем-же блоком?
Или это разные блоки с разными именами?

В БЭМ можно создать блок и примиксовать к нему другой и все стили и поведения от этого блока будут у текущего.
Но при этом блок также имеет свой внутренний мир и свое имя.

Как в bevis создавать новые, похожие блоки не копируя css и часть js от уже существующих похожих блоков?

Описать, как Form.render рендерит блок на странице

Хотелось бы больше услышать о функции _render() вот здесь:

А теперь мы налету будем генерить input!
Открываем blocks/form/form.js и пишем:

  1. Мы удалили метод render(). Он не нужен.

Слишком быстро добавили и убрали :)
И ещё понравился правильный способ создания элементов: _createElement =)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.