Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   Фреймворк Matreshka.js (https://javascript.ru/forum/project/42461-frejjmvork-matreshka-js.html)

FINoM 27.10.2013 17:06

Фреймворк Matreshka.js
 
Послезавтра, во вторник, выложу первую статью серии о моём фреймворке, а пока небольшая интрига:

Пр вызове кода внизу, таблица реагирует самостоятельно. Код реален и работает в Internet Explorer 8. Я поборол Object.defineProperty! Фак йеах.
Статья будет расположена по этому адресу: http://habrahabr.ru/post/196146/

nerv_ 28.10.2013 11:45

Цитата:

Сообщение от FINoM
Пр вызове кода внизу, таблица реагирует самостоятельно

ангуляр :)

upd: http://learn.javascript.ru/play/MNhEd

FINoM 28.10.2013 13:03

Цитата:

Сообщение от nerv_
ангуляр

Не MVVM :)
Вся логика в JS, никакой логики в HTML.

var Example = Class({
    'extends': MK.DOMArray,
    constructor: function() {
        this
            .initMK()
            .bindElement( this, 'table tbody' )
        ;
    },
    renderer: function( object ) {
        return '<tr><td class="a"></td><td class="b"></td><td class="c"></td></tr>';
    }
});


var ExampleObject = Class({
    'extends': MK.Object,
    constructor: function( o ) {
        this
            .initMK()
            .jset( o )
            .on( 'render', function() {
                this.bindElement({
                    a: this.$( '.a' ),
                    b: this.$( '.b' ),
                    c: this.$( '.c' )
                }, MK.htmlp );
            })
        ;
    }
});

nerv_ 28.10.2013 13:41

Цитата:

Сообщение от FINoM
Не MVVM

не понял

Цитата:

Сообщение от FINoM
Вся логика в JS, никакой логики в HTML

а где ты увидел логику в html? Зато я у тебя вижу классы для выборки:
Цитата:

a: this.$( '.a' ),
b: this.$( '.b' ),
c: this.$( '.c' )

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

И получается что все "биндинги" необходимо писать в js коде. А их, как правило, много, вместо того, чтобы задать декларативно - дешево и сердито.

FINoM 28.10.2013 14:15

Цитата:

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

Это делается в цикле, пробегом по свойствам и выборкой элементов по селектору (например, data-key). Давай через несколько дней поговорим :)

FINoM 29.10.2013 14:28

Хэхэй, смотри ссылку в первом посте.

nerv_ 30.10.2013 00:50

Цитата:

Сообщение от FINoM
Не MVVM

вот теперь понял

Ознакомился со статьей на хабре.
Цитата:

Правильный способ (подробнее о методе .each в статье об MK.Object):
Цитата:

Я предпочитаю разграничивать «комплексные» элементы приложения таким образом, чтоб каждый элемент являлся элементарным классом (что я имею в виду, будет понятнее в статье о наследовании), привязок в котором не так много. Возможно, мой подход сильно деформирован убеждением о том, что JS код и HTML должны быть максимально разграничены: верстальщик верстает, а программист, если и вносит, то только минимальные и необходимые изменения.
Я об этом и толкую :) Любой верстальщик может декларативно задавать поведение, глядя на написанное ранее js програмистом. Если сомневается - не использует. Все просто.

Попытаюсь обосновать плюсы декларативности:
<div>
    <input type="text" ng-model="model.field" />
</div>

- я вижу куда именно к модели привязан инпут, без необходимости лезть в js-код
- код привязок (биндингов) преимущественно "лапша". Только место занимает и внимание на себя отвлекает. Его, кстати, очень много в приложениях.
- возможность задавать поведение декларативно
<div ng-show="model.type[0|1]"></div>

- сходу не помню )

Цитата:

Цитата:

Обновлений в html будет много, а надо только одно, как этим управлять?
Почему вы так решили? ДОМ изменяется только тогда, когда меняется значение свойства:
DjDiablo об этом писал

Цитата:

Предложите, пожалуйста, какой-нибудь вариант решения.
Цитата:

Тут к сожалению нет решения, для js точно, в каком-нибудь TypeScript можно, а тут нет.
Цитата:

Искать по bindElement
Цитата:

Как-то нетривиально, а если ещё смешивать с какими-нибудь другими либами, вообще не представляю как люди будут ориентироваться в таком коде.
а как люди в борьще ориентируются? :D

p.s.: комменты на хабре веселят:
Цитата:

И снова зависимость от jquery :-/
required: a computer

FINoM 23.03.2015 16:51

Вышла первая версия Матрешки, ура! Как бонус, появилась полная, всеобъемлющая документация на русском: http://ru.matreshka.io/

Следите за блогом Матрешки на Хабре, скоро выйдет статья с подробностями
http://habrahabr.ru/company/matreshka/

FINoM 23.03.2015 17:02

nerv_, за годы работы с Матрешкой, ни разу не возникало проблем с байндингами внутри JS кода. Напротив, я многократно убедился, что никакой логики в HTML быть не должно.

FINoM 23.03.2015 17:30

Цитата:

Сообщение от рони
при скролинге ie уходит в аут

Честно говоря, в ИЕ дяже не проверял. А какая версия?


Часовой пояс GMT +3, время: 22:38.