|
Результаты опроса: Как вам UI
|
|
Похоже на унылое говно
|
|
20 |
68.97% |
Однозначно буду использовать
|
|
7 |
24.14% |
Пока не разобрался что это
|
|
2 |
6.90% |
|
22.05.2013, 19:12
|
|
Профессор
|
|
Регистрация: 18.01.2013
Сообщений: 1,098
|
|
пруф
<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>
|
|
22.05.2013, 19:23
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
megaupload, я тебе список вопросов написал, ответь плиз.
Ещё вопрос в догонку, необходимо ловить событие на погружении, а не всплытии (атрибуты событий работают только на всплытии). Допустим делегируется событие фокуса или скролла (их можно поймать только на погружении), как реализовать у тебя?
Последний раз редактировалось kobezzza, 22.05.2013 в 19:26.
|
|
22.05.2013, 19:33
|
|
Профессор
|
|
Регистрация: 18.01.2013
Сообщений: 1,098
|
|
Сообщение от 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))
она вообще может работать через консоль и ДОЛЖНА так работать, это покажет правильность построения логики. а оболочка просто прикручивается. как некий бонус
Последний раз редактировалось megaupload, 22.05.2013 в 19:44.
|
|
22.05.2013, 19:35
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Сообщение от megaupload
|
для этого есть метод
var widget = new Widget();
widget.render();
|
Ясно, а остальные вопросы?
Цитата:
|
ну или типа того, а вообще ответ такой: никак не решается пока, а надо?
|
Пример из реальной жизни: у тебя есть грид, в котором 10к ячеек. Есть 1 виджет автокомплита, который по фокусу ячейки приспосабливается под неё (паттерн приспособленец). Вешать событие на 10 тысяч ячеек слишком толсто.
Цитата:
|
у меня же такого нет
|
плохо, фича в реальной жизни оч полезная.
Цитата:
|
никак, оболочка сама решает какие методы логики вызывать, логика про оболочку вообще ничего не знает. ради чего все и дедалось.
|
Это очень плохо. Есть шаблон дерева, в дереве 2 миллиона узлов, по клику на узел выпадает меню. Шаблон рекурсивный, количество узлов не известно.
Последний раз редактировалось kobezzza, 22.05.2013 в 19:42.
|
|
22.05.2013, 19:44
|
|
Профессор
|
|
Регистрация: 18.01.2013
Сообщений: 1,098
|
|
Сообщение от kobezzza
|
Ясно, а остальные вопросы?
|
обновил) прочитай и скажи понял ты что это за штука или нет)?
а вообще на вопросы на которые я не ответил значит я принял к сведению, типа "этого нет, хорошая идея" )
Последний раз редактировалось megaupload, 22.05.2013 в 19:48.
|
|
22.05.2013, 19:47
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Цитата:
|
логика виджета вообще ни чего не знает ни про css ни про html))
|
Т.е. когда я подключаю виджет в проект, я должен думать, что мне нужно подключить ему CSS/шаблон/его родительские виджеты и потом переживать, что в глобальном пространстве кто-то сделает
* {
padding: 10px !important;
}
?
Сама концепция виджета подразумевает, что он атомарен. Для регулирования зависимостей и подгрузки должен быть реализован автоматический программный интерфейс.
|
|
22.05.2013, 19:52
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Сообщение от megaupload
|
обновил) прочитай и скажи понял ты что это за штука или нет)?
а вообще на вопросы на которые я не ответил значит я принял к сведению, типа "этого нет, хорошая идея" )
|
Я то понял, теперь осталось тебе понять, что если ты дотянешь до версии 1.0 то у тебя будет свой Angular Это не плохо, может даже ты придумаешь какие то прикольные фичи и реализуешь их, но то что есть сейчас будет переосмысленно и переделано - это факт
ЗЫ: На самом деле, я тоже писал подобный каркас (специально для своего проекта, поэтому показывать нет смысла), но я пошёл по пути БЭМ, взяв за основу идею реализации из Яндекса, поэтому вопросы которые я написал были взяты из реальной жизни и все они были мною решены в тот или иной момент времени. Так что никаких сферических коней, всё наболевшее.
Последний раз редактировалось kobezzza, 22.05.2013 в 19:57.
|
|
22.05.2013, 19:56
|
|
Профессор
|
|
Регистрация: 18.01.2013
Сообщений: 1,098
|
|
Нет концепция виджета подразумевает что эта штучка "отображалка чего-то". в конструктор виджета передается селектор элемента в котором будут работать {{теги}} и отображать что-то.
От сюда и название.
Виджеты, как и все в сайте по прежнему состоит из 3 независимых вещей: css, html, javascript
они НЕЗАВИСИМЫ и ВЗАИМОЗАМЕНЯЕМЫ, один раз описав логику калькулятора я могу применять его к разным кускам разметки делая из них калькулятор. Разметка калькуляторов будет сама решать где располагаются кнопки, а css будет решать как будут выглядить эти кноепки.
Зависимость (что к чему прикручиваем) описывается в HTML разметке.
подобно тому как привязку разметки к отображению CSS мы описываем в HTML так и привязку разметки к JAVASCRIPT мы будем описываем в HTML
Единственно что внизу в коде нужно сделать new Widget('селкектор') и заставить виджет зацепиться за разметку и отслеживать её. (это проблема и нужно как-то решать при чем решать красиво и очевидно)
а так же нужно придумать как виджетам общаться между собой.
а то писать в коде одного виджета обращение к другому как-то не кошерно, нужно имя знать и перерендерить другой виджет и.т.п. по этому нужна какая-то подписка на роутер событий, но повторюсь, все это будет делать уже другой класс юракса, класс Widget делает только то что он делает) он рисует ТЕГИ
kobezzza,
обьясню на примере как мы устраняем зависимость css от javascript
то есть не class="item.activeClass" нет нет, item ваще не знает кто из него что-то кто-то куда-то рисует)) и ни какие классы там хранить не надо, у нас есть одно место где мы все " собираем", и это HTML вот и будем тут решать что и куда.
Последний раз редактировалось megaupload, 22.05.2013 в 20:02.
|
|
22.05.2013, 20:03
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Сообщение от megaupload
|
Нет концепция виджета подразумевает что эта штучка "отображалка чего-то". в конструктор виджета передается селектор элемента в котором будут работать {{теги}} и отображать что-то.
От сюда и название.
Виджеты, как и все в сайте по прежнему состоит из 3 независимых вещей: css, html, javascript
они НЕЗАВИСИМЫ и ВЗАИМОЗАМЕНЯЕМЫ, один раз описав логику калькулятора я могу применять его к разным кускам разметки делая из них калькулятор. Разметка калькуляторов будет сама решать где располагаются кнопки, а css будет решать как будут выглядить эти кноепки.
Зависимость (что к чему прикручиваем) описывается в HTML разметке.
подобно тому как привязку разметки к отображению CSS вы описываем в HTML так и привязку разметки к JAVASCRIPT вы описываем в HTML/
Единственно что внизу в коде нужно сделать new Widget('селкектор') и заставить виджет зацепиться за разметку и отслеживать её.
|
Ты говоришь, как тебе кажется правильно, а я говорю как чаще приходится делать в реальной жизни. То, что называешь "сделать из одного калькулятора другой" называется наследованием и это нормально. Но я не хочу думать, что при подключении виджета мне нужно учесть все его зависимости и подключить их руками, вот про что я.
|
|
22.05.2013, 20:15
|
|
Профессор
|
|
Регистрация: 18.01.2013
Сообщений: 1,098
|
|
Сообщение от kobezzza
|
Но я не хочу думать, что при подключении виджета мне нужно учесть все его зависимости и подключить их руками, вот про что я.
|
Ты хочешь сказать что ты хочешь просто сделать так?
<div class="box"></div>
<script>
var box = new Chat('.box')
</script>
и он сам все кнопочки нарисует и все обработчики развесит и все стили применит? и нарисует чат внутри этого дива?
|
|
|
|