Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Смишных картинок тред (https://javascript.ru/forum/offtopic/35821-smishnykh-kartinok-tred.html)

Gozar 06.12.2013 19:30

kobezzza,
+1

Даже добавить нечего, все лаконично и доходчиво. Но напишу, раз чукча писатель ))

DjDiablo 06.12.2013 20:16


DjDiablo 06.12.2013 20:48

Цитата:

Сообщение от kobezzza (Сообщение 285009)
У меня например все виджеты наследуются от класса Defer, который реализует АПИ: this.setTimeout, this.setInterval, this.setImmediate, this.ajax, this.proxy, this.setQueue и т.д. т.е. используя это АПИ вместо голых вызовов мы полностью устраняем проблему возможных утечек памяти и багов, т.к. сами виджеты знают об этих обработчиках и отменяют их выполнение и чистят память автоматически в деструкторе.

Плюсую. ( точнее плюсанул бы если бы мог :) )
Аналогично юзаю деструкторы. Только у меня виджет еще может иметь дочерние виджеты.

что то вроде.
panel=new Panel({
    title:'hello world 1'
});

panel2=new Panel({
    title:'hello world 2'
});


input=new Input({
     model:exampleModel,
     field:'name'
})

panel1.add(panel2)
panel2.add(input);


У каждого виджета есть свойсво childrens в которой метод add может добавлять другие виджеты. Если panel1 будет удален, то деструктор panel1 в цикле вызовет деструктор для каждого виджета в childrens. Тобиш сначало сработает деструктор для panel1 который вызовет деструктор для panel2, а деструктор panel2 вызовет деструктор для input.

В результате удаление виджета panel1 приведет к удалению всех вложенных виджетов с очисткой памяти для каждого виджета.

Вообще я считаю что виджет в фреймворке должен создаваться двумя путями, через new widgetname(); и декларативно, поскольку в разных ситуациях виджеты удобно создавать по разному. Если вы создаете систему виджетов ктоорую можно использовать и декларативно и императивно то удобнее с начало реализовать императивное создание виджетов а декларативное создание реализовывать как надстройку над императивным. Если в случае чисто декларативных виджетов иерархия виджетов особо не нужна и достаточно вызвать деструктор для всех виджетов внутри какого либо dom элемента, то в случае двойного подхода нужно учитывать иерархию. Дополнительным бонусом при учете иерархии становится предельно удобное обращение к родителям и детям (просто по свойствам childrens и parent).

Maxmaxmaximus3 06.12.2013 20:51

kobezzza, у меня нет виджетов больше( нет такой сущности как виджет, есть сущность контроллер и директивы, и они связываются в точках крепления через скоуп, наверное на ветках скоупа я и буду отслеживать все эти удаления и очистку. по сути при удалении какой-то директивы (DOM) должны удалится использующие её контроллеры, а они хранятся в скоупе, а скоуп, ну вы поняли, к нему имеют доступ все, так что директива при удалении может лезть в скоуп и давать ему сигнал мыл " все что ниже этой ветки - удаляй мыл, а он посмотрит а у него там всякие контроллеры хуеллеры и директивы понаоставляли обработчиков, и очистит их и самоудалится=)

спасибо КобИИИИИза

А кто вообще ангуляр не юзал?

kobezzza 06.12.2013 21:13

DjDiablo, у мя тоже самое :)


Цитата:

А кто вообще ангуляр не юзал?
Я только баловался с ним, в реальном проекте не юзал.

Maxmaxmaximus3 06.12.2013 21:14

kobezzza, такое чувство что ты не юзаешь ангуляр и не юзал. Я прав?

kobezzza 06.12.2013 21:14

Цитата:

Сообщение от Maxmaxmaximus3 (Сообщение 285052)
kobezzza, такое чувство что ты не юзаешь ангуляр.

Правильно, потому что я юзаю БЭМ:)

Я изучал ангуляр, чтобы понять что за зверь и основные фичи, смотрел интересующие внутренние реализацию, сравнивал с реализацией нокаута, но в реальном проекте не юзал.

Maxmaxmaximus3 06.12.2013 21:34

Ты можешь реализовать БЭМ и на ангуляре =) я не совсем понимаю это противопоставление, БЭМ это верстка и разметка, ангуляр это связь интерфейса и логики. Где противопоставление то?

kobezzza 06.12.2013 21:41

Цитата:

Сообщение от Maxmaxmaximus3 (Сообщение 285054)
Ты можешь реализовать БЭМ и на ангуляре =) я не совсем понимаю это противопоставление, БЭМ это верстка и разметка, ангуляр это связь интерфейса и логики. Где противопоставление то?

Ну БЭМ - это не только вёрстка и разметка, и там оч много вещей не совместимых по идеологии с Ангуляром. То, что ты имеешь ввиду под БЭМ - это на самом деле АНБ (Абсолютно Независимые Блоки): эти термины постоянно путают :) В общем могу сказать что для моего проекта, над которым я сейчас работаю - это оптимальный вариант, технический нюанс.

Maxmaxmaximus3 06.12.2013 21:45

kobezzza, покажи хоть один свой сайт, желательно один из лучших)
я просто ни одного сайта еще не сделал, и работаю развозчиком обогревателей, мне хочется посмотреть на что ровняться =)


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