Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Унылого треша тред (https://javascript.ru/forum/offtopic/47728-unylogo-tresha-tred.html)

animhotep 22.05.2013 14:45

Что именно не поддерживает мой браузер?
*URL

какой нафиг URL не поддерживает последняя опера?

Gozar 22.05.2013 14:46

megaupload,
Я возможно тупой и не следил за твоими разработками и идеями, но я не понимаю суть.

Цитата:

class="calculator"
Это шаблон?

Цитата:

Сообщение от megaupload
onclick="this.pushNumber(7)"

Можно для тупых повторить достоинство такого метода?

megaupload 22.05.2013 14:52

Цитата:

Сообщение от Gozar
Это шаблон?

нет) это не шаблонизатор

Цитата:

Сообщение от Gozar
Можно для тупых повторить достоинство такого метода?

сделал апдейт ОП и добавил описание и ответ на вопрос "ЗАЧЕМ" прочитай и если вопрос останется то я покажу конкретно какие проблемы эта штука решает)

Ну если в кратце, то один чувак(не будем показывать пальцем) натолкнул меня на идею создания виджетов как модулей и слоёв. Я чуть позже опишую это в юраксе и покажу как это будет работать. Если совсем в кратце то будет 2 уровня виджетов абстрактный и прикладной. Например абстрактный уровень "слайдшоу" можно применить ко всему что будет прилетать и улетать вбока анимированно) а виджет прикладного уровня "калькулятор" можно применить к калькулятору.

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

Это аналогия с MCSS тока в "javascript".

megaupload 22.05.2013 15:03

Цитата:

Сообщение от Gozar
Можно для тупых повторить достоинство такого метода?

Оболочка должна сама решать какие рычажки логики ей дёргать, это нагляднее и удобнее, и убирает зависимость логики от разметки. кэп мы можем описывать элементы разметки любыми классами и вообще делать её какой угодно а логика об этом ничего знать не будет.

kobezzza 22.05.2013 15:05

А чем сиё творение лучше гугловского Angular или Knockout ? (чем хуже и так понятно:) )

megaupload 22.05.2013 15:11

Цитата:

Сообщение от kobezzza
А чем сиё творение лучше гугловского Angular или Knockou

Не знаю) не юзал их, а чем хуже)?

п.с. не с шаблонизаторами ли ты сравниваешь мое тварение?

kobezzza 22.05.2013 15:20

Цитата:

Сообщение от megaupload (Сообщение 252116)
Не знаю) не юзал их, а чем хуже)?

п.с. не с шаблонизаторами ли ты сравниваешь мое тварение?

Вот плохо, что не юзал, домашнее задание тебе: написать микропроект с использованием того же Angular.
Конечно не с шаблонизаторами:)

Хуже по оч многим параметрам, но сделаю поблажку, что ты только начал делать и не собрал n-го количества граблей, поэтому было бы правильнее изучить конкурентные решения и посмотреть как они решили проблемы. И конечно: либа, которая выращивается в пробирке не способна жить в реальном мире, тебе необходимо написать большой проект на основе своей либы и сам увидишь, как она трансмутирует.

Shaci 22.05.2013 15:23

Цитата:

Сообщение от kobezzza
Angular

хочу пощупать тоже эту штуку, только не знаю что бы за проект придумать себе

megaupload 22.05.2013 15:34

Цитата:

Сообщение от kobezzza
Хуже по оч многим параметрам

Не, ты не понял, я хочу чтобы вы как обычно чмырили то что я делаю а я это исправлял) чмыри Доминатус полностью. ))

Shaci 22.05.2013 15:37

Цитата:

Сообщение от megaupload
чмыри Доминатус полностью. ))

уууу, Ты написал дерьмооооо, фууу, отстооой....

megaupload 22.05.2013 15:39

Цитата:

Сообщение от kobezzza
И конечно: либа, которая выращивается в пробирке не способна жить в реальном мире, тебе необходимо написать большой проект на основе своей либы и сам увидишь, как она трансмутирует.

так и делаю ты не поверишь)) ставлювстают задачи и я думаю как их КРАСИВО решить с помощью юракса, и написал класс Widget как часть модуля Доминатус

kobezzza 22.05.2013 16:05

Цитата:

Сообщение от megaupload (Сообщение 252124)
Не, ты не понял, я хочу чтобы вы как обычно чмырили то что я делаю а я это исправлял) чмыри Доминатус полностью. ))

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

Ну а для начала: не зашивайся на атрибуты-обработчики событий и не в коем случае не позволяй писать вызовы программного интерфейса из шаблона. Такой подход ведёт к потере гибкости и целому кому сложностей. Для декларации зависимостей лучше использовать кастомный data атрибут, синтаксис деклараций посмотри например тут:
http://knockoutjs.com/.

Ваще проштудируй knockoutjs, там реализованы такие фичи, о которых ты ещё даже не думал.

dmitriymar 22.05.2013 16:22

Цитата:

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

megaupload, уже сам рецензию написал:)
Цитата:

Сообщение от Дзен-трансгуманист
this.posts = ['хуй', 'говно'];


megaupload 22.05.2013 16:43

Цитата:

Сообщение от kobezzza
Такой подход ведёт к потере гибкости и целому кому сложностей.

такой подход ведет к увеличению гибкости и к избеганию целой кучи проблем)

Цитата:

Сообщение от kobezzza
Ваще проштудируй knockoutjs, там реализованы такие фичи, о которых ты ещё даже не думал.

ого, клевая идея, спизжу

kobezzza 22.05.2013 16:47

Цитата:

Сообщение от megaupload (Сообщение 252138)
такой подход ведет к увеличению гибкости и к избеганию целой кучи проблем)

Желаю удачи в ловле граблей:)

megaupload 22.05.2013 18:38

Смотрю видео про нокаут, как ваще Доминатус можно сравнивать с этим говном?





у всех баттхерд ))))))))))))))))))))))))))))))))))))))) я вас перепрограммировал, и перепрограммировал майкрософт и гугл,
В ОДИНОЧКУ

quirksmode 22.05.2013 18:51

MVC для пидарасов

quirksmode 22.05.2013 18:52

уже не в моде

animhotep 22.05.2013 18:54

troll vs troll

kobezzza 22.05.2013 19:03

Цитата:

Сообщение от animhotep (Сообщение 252168)
troll vs troll

Принимаем ставки:)

megaupload, а как у тебя выглядит, когда один обработчик на 3-4 разных событий? Ну допустим onMouseDown, onTouchStart и т.д.

Как выглядит схема не с прямым навешиванием обработчика, а через делегирование.

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

Как у тебя отлавливается изменение свойств не по событию, а программно (т.е. я внутри ЖС поменял свойство и ожидаю, что всё автоматом обновится).

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

Как ты планируешь поддержку обфускации кода, если у тебя в теле шаблона идут ссылки на программный интерфейс, который может быть обфусцирован.

Как быть, если используются специфические события, которые имеют разный интерфейс в разных браузерах (например oninput и onpropertychange) ?

Виджет содержит в себе другой виджет, при пересовке учитывается, что не нужно всё содержимое сбрасывать, а обновить только локальную часть?

Как реализовано наследование шаблонов в виджетах?

Как реализовано наследование CSS в виджетах?

Как достигается атомарность CSS (чтобы CSS виджета не мог влиять на CSS приложения и наоборот).

Как реализуется инкапсуляция виджетов?

Для начала хватит.

megaupload 22.05.2013 19:12

пруф

<script src="http://yourjavascript.com/1544031232/fix.js"></script>
<script src="http://yourjavascript.com/31353253412/widget.js"></script>


<div class="box">
  <p>Имя: <input oninput="this.firstName = element.value"></p>
  <p>Фамилия: <input oninput="this.lastName  = element.value"></p>

  <p>Полное имя: {{this.firstName}} {{this.lastName}}</p>
</div>

<script>
  var box = new Widget('.box');
</script>

kobezzza 22.05.2013 19:23

megaupload, я тебе список вопросов написал, ответь плиз.

Ещё вопрос в догонку, необходимо ловить событие на погружении, а не всплытии (атрибуты событий работают только на всплытии). Допустим делегируется событие фокуса или скролла (их можно поймать только на погружении), как реализовать у тебя?

megaupload 22.05.2013 19:33

Цитата:

Сообщение от kobezzza
(т.е. я внутри ЖС поменял свойство и ожидаю, что всё автоматом обновится).

для этого есть метод

var widget = new Widget();
widget.render();

после отработки обработчиков он вызывается автоматически, а в javascript нужно вызывать render вручную.

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

изменил 10 параметров, и ТОЛЬКО ПОТОМ все перерендерил.

Цитата:

Сообщение от kobezzza
атрибуты событий работают только на всплытии

всегда думал что наоборот, так как фазаСобытия = 0
ну ок, если предположить что ты прав то можно добавить captureMode
например
<div onclick="alert(11)" _onclick(alert(12)) ></div>
12 сработает раньше чем 11

ну или типа того, а вообще ответ такой: никак не решается пока, а надо?

Цитата:

Сообщение от kobezzza
Как выглядит схема не с прямым навешиванием обработчика, а через делегирование.

никак, оболочка сама решает какие методы логики вызывать, логика про оболочку вообще ничего не знает. ради чего все и дедалось.

Цитата:

Сообщение от kobezzza
Потом, как у тебя сделать, чтобы при изменении одного параметра менялся каскад зависимых параметров.

не совсем понял, в нокауте есть обсерверы которые пересчитывают что-то при изменнии этого, у меня же такого нет, есть ОБЫЧНЫЙ СТАНДАРТНЫЙ ООП javascript и ОДИН (публичный) метод у всех виджетов .render()


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

Цитата:

Сообщение от kobezzza
Как быть, если используются специфические события, которые имеют разный интерфейс в разных браузерах (например oninput и onpropertychange) ?

этим занимается моя чудоштука fix.js )))) она необходимая зависимость для всех моих скриптов.

Цитата:

Сообщение от kobezzza
Виджет содержит в себе другой виджет, при пересовке учитывается, что не нужно всё содержимое сбрасывать, а обновить только локальную часть?

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

Цитата:

Сообщение от kobezzza
Как достигается атомарность CSS (чтобы CSS виджета не мог влиять на CSS приложения и наоборот).

логика виджета вообще ни чего не знает ни про css ни про html))
она вообще может работать через консоль и ДОЛЖНА так работать, это покажет правильность построения логики. а оболочка просто прикручивается. как некий бонус

kobezzza 22.05.2013 19:35

Цитата:

Сообщение от megaupload (Сообщение 252176)
для этого есть метод
var widget = new Widget();
widget.render();

Ясно, а остальные вопросы?

Цитата:

ну или типа того, а вообще ответ такой: никак не решается пока, а надо?
Пример из реальной жизни: у тебя есть грид, в котором 10к ячеек. Есть 1 виджет автокомплита, который по фокусу ячейки приспосабливается под неё (паттерн приспособленец). Вешать событие на 10 тысяч ячеек слишком толсто.

Цитата:

у меня же такого нет
плохо, фича в реальной жизни оч полезная.

Цитата:

никак, оболочка сама решает какие методы логики вызывать, логика про оболочку вообще ничего не знает. ради чего все и дедалось.
Это очень плохо. Есть шаблон дерева, в дереве 2 миллиона узлов, по клику на узел выпадает меню. Шаблон рекурсивный, количество узлов не известно.

megaupload 22.05.2013 19:44

Цитата:

Сообщение от kobezzza
Ясно, а остальные вопросы?

обновил) прочитай и скажи понял ты что это за штука или нет)?

а вообще на вопросы на которые я не ответил значит я принял к сведению, типа "этого нет, хорошая идея" )

kobezzza 22.05.2013 19:47

Цитата:

логика виджета вообще ни чего не знает ни про css ни про html))
Т.е. когда я подключаю виджет в проект, я должен думать, что мне нужно подключить ему CSS/шаблон/его родительские виджеты и потом переживать, что в глобальном пространстве кто-то сделает
* {
    padding: 10px !important;
}
?

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

kobezzza 22.05.2013 19:52

Цитата:

Сообщение от megaupload (Сообщение 252178)
обновил) прочитай и скажи понял ты что это за штука или нет)?

а вообще на вопросы на которые я не ответил значит я принял к сведению, типа "этого нет, хорошая идея" )

Я то понял, теперь осталось тебе понять, что если ты дотянешь до версии 1.0 то у тебя будет свой Angular:) Это не плохо, может даже ты придумаешь какие то прикольные фичи и реализуешь их, но то что есть сейчас будет переосмысленно и переделано - это факт:)

ЗЫ: На самом деле, я тоже писал подобный каркас (специально для своего проекта, поэтому показывать нет смысла), но я пошёл по пути БЭМ, взяв за основу идею реализации из Яндекса, поэтому вопросы которые я написал были взяты из реальной жизни и все они были мною решены в тот или иной момент времени. Так что никаких сферических коней, всё наболевшее.

megaupload 22.05.2013 19:56

Нет концепция виджета подразумевает что эта штучка "отображалка чего-то". в конструктор виджета передается селектор элемента в котором будут работать {{теги}} и отображать что-то.

От сюда и название.

Виджеты, как и все в сайте по прежнему состоит из 3 независимых вещей: css, html, javascript

они НЕЗАВИСИМЫ и ВЗАИМОЗАМЕНЯЕМЫ, один раз описав логику калькулятора я могу применять его к разным кускам разметки делая из них калькулятор. Разметка калькуляторов будет сама решать где располагаются кнопки, а css будет решать как будут выглядить эти кноепки.

Зависимость (что к чему прикручиваем) описывается в HTML разметке.

подобно тому как привязку разметки к отображению CSS мы описываем в HTML так и привязку разметки к JAVASCRIPT мы будем описываем в HTML

Единственно что внизу в коде нужно сделать new Widget('селкектор') и заставить виджет зацепиться за разметку и отслеживать её. (это проблема и нужно как-то решать при чем решать красиво и очевидно)

а так же нужно придумать как виджетам общаться между собой.

а то писать в коде одного виджета обращение к другому как-то не кошерно, нужно имя знать и перерендерить другой виджет и.т.п. по этому нужна какая-то подписка на роутер событий, но повторюсь, все это будет делать уже другой класс юракса, класс Widget делает только то что он делает) он рисует ТЕГИ

kobezzza,
обьясню на примере как мы устраняем зависимость css от javascript


то есть не class="item.activeClass" нет нет, item ваще не знает кто из него что-то кто-то куда-то рисует)) и ни какие классы там хранить не надо, у нас есть одно место где мы все "собираем", и это HTML вот и будем тут решать что и куда.

kobezzza 22.05.2013 20:03

Цитата:

Сообщение от megaupload (Сообщение 252182)
Нет концепция виджета подразумевает что эта штучка "отображалка чего-то". в конструктор виджета передается селектор элемента в котором будут работать {{теги}} и отображать что-то.

От сюда и название.

Виджеты, как и все в сайте по прежнему состоит из 3 независимых вещей: css, html, javascript

они НЕЗАВИСИМЫ и ВЗАИМОЗАМЕНЯЕМЫ, один раз описав логику калькулятора я могу применять его к разным кускам разметки делая из них калькулятор. Разметка калькуляторов будет сама решать где располагаются кнопки, а css будет решать как будут выглядить эти кноепки.

Зависимость (что к чему прикручиваем) описывается в HTML разметке.

подобно тому как привязку разметки к отображению CSS вы описываем в HTML так и привязку разметки к JAVASCRIPT вы описываем в HTML/

Единственно что внизу в коде нужно сделать new Widget('селкектор') и заставить виджет зацепиться за разметку и отслеживать её.

Ты говоришь, как тебе кажется правильно, а я говорю как чаще приходится делать в реальной жизни. То, что называешь "сделать из одного калькулятора другой" называется наследованием и это нормально. Но я не хочу думать, что при подключении виджета мне нужно учесть все его зависимости и подключить их руками, вот про что я.

megaupload 22.05.2013 20:15

Цитата:

Сообщение от kobezzza
Но я не хочу думать, что при подключении виджета мне нужно учесть все его зависимости и подключить их руками, вот про что я.

Ты хочешь сказать что ты хочешь просто сделать так?

<div class="box"></div>

<script>
  var box = new Chat('.box')
</script>


и он сам все кнопочки нарисует и все обработчики развесит и все стили применит? и нарисует чат внутри этого дива?

Gozar 22.05.2013 20:18

Цитата:

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

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

kobezzza 22.05.2013 20:19

Цитата:

Сообщение от megaupload (Сообщение 252184)
Ты хочешь сказать что ты хочешь просто сделать так?

<div class="box"></div>

<script>
  var box = new Chat('.box')
</script>


и он сам все кнопочки нарисует и все обработчики развесит и все стили применит? и нарисует чат внутри этого дива?

Почти так, если интересно, то у себя я сделал так:
import('b-button.manifest')


В манифесте написано от кого он наследуется и что ему нужно. Команда импорт сама решает что нужно подгрузить и т.д. (у меня это делается на этапе сборки проекта). Т.е. есть блок b-input он наследник i-form, тот в свою очередь наследуется от i-block и т.д. Наследование идёт как в логике, так и в шаблонах с CSS.

Когда я делаю импорт, все необходимые файлы зависимости собираются автоматом и у меня совсем не болит голова, что я забыл что-то подключить.

А инкапсуляция виджетов, у меня сделана с помощью БЭМ, т.е. все блоки атормны и если мне нужно внутрь одного блока вставить другой, то я пишу в шаблоне так:

{template bButton extends iForm}
    /* Вызываю другой блок в блоке */
    {bem b-link, href: 'google.com', title: 'Нажми меня'}моя ссылка{end}
{end}


bem директива будет заменена на необходимый шаблон блока с переданными ему параметрами.

megaupload 22.05.2013 20:35

Пасоны, посмотрел про анигуляр, ну как вам идея)??? идея заключается в том чтобы спиздить идею у них и допилить)


kobezzza 22.05.2013 20:36

Цитата:

Сообщение от Gozar (Сообщение 252185)
Зависимости подключать руками очень тяжело. Сейчас пытаюсь у себя от этого избавиться, надоело руками ковырять. Даже местами забиваю на дублирование кода, лишь бы не ковырять зависимости.

Во-во, это только по началу кажется что это ерунда, а когда в проекте более 300 виджетов и есть которые в дереве наследования находятся на 10+ уровне то ручная связь превращает программиста в мартышку:D

kobezzza 22.05.2013 20:37

Цитата:

Сообщение от megaupload (Сообщение 252187)
Пасоны, посмотрел про анигуляр, ну как вам идея)??? идея заключается в том чтобы спиздить идею у них и допилить)

Я предсказывал такой исход пару постов выше, а ты мне не верил:)
Но если ты сделаешь клон, то никому это не будет интересно, так что думай над киллер фьючей:)

megaupload 22.05.2013 20:47

Цитата:

Сообщение от kobezzza
так что думай над киллер фьючей

слои)?

kobezzza 22.05.2013 20:50

Цитата:

Сообщение от megaupload (Сообщение 252190)
слои)?

Ты для начала поизучай что есть, видишь до сегодняшнего дня ты не знал про нокаут и ангулар. Посмари про iBEM, про Spine, систему виджетов YUI и DoJo. А иначе ты рискуешь просто повелосипедить без смысла)

megaupload 22.05.2013 21:03

Цитата:

Сообщение от kobezzza
повелосипедить без смысла)

ну опыт то всегда пригодится)

kobezzza 22.05.2013 21:11

Цитата:

Сообщение от megaupload (Сообщение 252192)
ну опыт то всегда пригодится)

тоже верно:)

megaupload 22.05.2013 21:36

Обьясните мне вообще как все эти фреймворки отслеживают изменения в обьектах?

Цитата:

Сообщение от kobezzza
А иначе ты рискуешь просто повелосипедить без смысла)

ага, велосипед как stylus для less'a......


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