Javascript-форум (https://javascript.ru/forum/)
-   (X)HTML/CSS (https://javascript.ru/forum/xhtml-html-css/)
-   -   Вполнение Javascript в XML (https://javascript.ru/forum/xhtml-html-css/6768-vpolnenie-javascript-v-xml.html)

B~Vladi 08.04.2011 10:17

Цитата:

Сообщение от x-yuri
если пространства имен поддерживаются html5, то чего тебе не хватает? Тебе не нравится, что все про них забыли?

Да мне всё хватает. Просто изначально это пошло из XHTML. Что забыли - да, не нравится :)
Не нашли применение.

Цитата:

Сообщение от x-yuri
а какие другие тесты и почему их можно не писать? Ведь ты только структуру с помощью xml-схемы проверишь

Например, selenium.
Допустим, ты написал модуль. Его оттестили. Далее инициализация указывается в разметке на нескольких страницах. Если разметить не правильно (порядок элементов, обязательные атрибуты, значения атрибутов), понятно что скрип не сработает. Валидатор об этом скажет быстрее, чем ошибка найдется.
В данном случае структура полностью отражает функционал, поэтому можно проверять её.
Цитата:

Сообщение от x-yuri
jquery не призывает к усилиям по организации кода

Так и я не призываю :)
Я просто даю объектную среду. А как ты там с ней будешь работать - дело второе.
Цитата:

Сообщение от x-yuri
хм, разве? Ну возможно, если учесть, что более менее сложные клиентские приложения появились не так давно, по сравнению с серверными

Ну да. Не замечал? Наш отдел вообще считается как обслуживающий персонал для серверных кодеров. Клиентские профи тоже есть. Например, мы :)
Цитата:

Сообщение от x-yuri
в чем разница?

Да во всем разница :)

1. Тут мы вклиниваемся в мир CSS. Наглядно использование атрибута не по назначению. Меня блевать тянет от такой разметки и кода. В итоге это приводит только к постоянным багам/фиксам лучи поноса в сторону jQuery

2. Нестандартный атрибут. Ну это вообще каша получается. Зачем тогда в стили выносить остальное? Вчера я правил один интересный баг. Скрипт писался давно. Его код устанавливал свойство hidden для DOM-узла ссылки. Это задумывалось просто как флаг. В итоге, в html5 вводят тег hidden и ссылки исчезают. Мораль - не засирай чужое пространство, когда есть свое.

3. Реализация на классах вообще не катит. Нет уже такой гибкости. Ведь в значение атрибута занести кучу всякой инфы.
Ещё это не катит, потому что нельзя будет использовать всю мощь XML-схем.

4. В догонку:
http://www.w3.org/TR/2004/WD-xhtml-m...dule_namespace
Цитата:

XHTML requires that the elements and attributes declared in a module be within a defined XML namespace [XMLNAMES]. The identification of this namespace is an arbitrary URI. XHTML requires that when a module is implemented using an XML DTD, the module declares the namespace in a special manner. The purpose of this is to permit the selection, at document parse/validation time, of the use of namespace prefixes and of the prefix that is used to identify elements and attributes from the module.

Может потом ещё что вспомню.

x-yuri 08.04.2011 11:24

Цитата:

Сообщение от B~Vladi
Например, selenium.
Допустим, ты написал модуль. Его оттестили. Далее инициализация указывается в разметке на нескольких страницах. Если разметить не правильно (порядок элементов, обязательные атрибуты, значения атрибутов), понятно что скрип не сработает. Валидатор об этом скажет быстрее, чем ошибка найдется.
В данном случае структура полностью отражает функционал, поэтому можно проверять её.

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

Цитата:

Сообщение от B~Vladi
Так и я не призываю
Я просто даю объектную среду. А как ты там с ней будешь работать - дело второе.

хм, странно, читая вот это:
Цитата:

Сообщение от B~Vladi
Собственно, чем сейчас все и занимаются. Архитектура сегодняшнего веб-приложения:
данные - куча говна
логика - стая мух, облепивших говно со всех сторон
представление - где-то между говном и мухами

видно, что тебе это не нравится, и закрадывается подозрение, что все-таки призываешь

Цитата:

Сообщение от B~Vladi
Да во всем разница

ok, поспешил, попытка номер два
<div ns-parent="name">
  <p>Paragraph</p>
  <ns-item class="item-1">text</ns-item>
  <ns-item class="item-2">text</ns-item>
  <div class="nbsp">&nbsp;</div>
</div>


Цитата:

Сообщение от B~Vladi
2. Нестандартный атрибут. Ну это вообще каша получается. Зачем тогда в стили выносить остальное? Вчера я правил один интересный баг. Скрипт писался давно. Его код устанавливал свойство hidden для DOM-узла ссылки. Это задумывалось просто как флаг. В итоге, в html5 вводят тег hidden и ссылки исчезают. Мораль - не засирай чужое пространство, когда есть свое.

ну это проблема, в частности, библиотек, расширяющих DOM-элементы. С одной стороны это недостаток, но ведь удобно же. Мы же будем решать ее так, при инициализации компонента сообщаем ему типа "префикс пространства имен" и он ищет теги с этим префиксом, в примере выше префикс был ns

т.е. в общем-то все это можно легко сделать без пространств имен (их можно сэмулировать), за исключением валидации

B~Vladi 08.04.2011 11:52

Цитата:

Сообщение от x-yuri
Просто готовые компоненты часто подгоняют под свои требования и в результате вылазят всякие проблемы.

Этот случай я учел. Я сам допиливал не один плагин. Ну я уже говорил - пишем либо модуль, либо расширение к модулю, если нам нужно что-то изменить. Код модуля остается прежним. Это некая прослойка.
Цитата:

Сообщение от x-yuri
видно, что тебе это не нравится, и закрадывается подозрение, что все-таки призываешь

Поясню. Стиль кодирования я не навязываю. Можешь говнокодить сколько хочется, но это всё в пределах модуля и ни на что не влияет. Сейчас же сложно анализировать большую кучу кода - что к чему относится, что за что отвечает. Вспоминаются слова моих бывших коллег, Java-кодеров: "Как вы тут вообще разбираетесь? Не видно ведь кто что делает. В Java, например, видно какой класс для чего написан.".
Цитата:

Сообщение от x-yuri
это значит что больше тестировать нету смысла?

Валидатором можно оттестить именно применение того или иного модуля на разных страницах. Создал страницу - новый тест писать не надо, всё уже написано до вас.
Цитата:

Сообщение от x-yuri
ну это проблема, в частности, библиотек, расширяющих DOM-элементы. С одной стороны это недостаток, но ведь удобно же.

Ну там не совсем библиотека была. Просто самописный кусок логики с использованием jQuery. В нем же и устанавливалось это свойство.
Цитата:

Сообщение от x-yuri
попытка номер два

Ну не пойдет такая попытка. Не видно по коду что к чему относится. Зачем вообще эмулировать пространства имен, если они уже вшиты в браузер, спецификацию, валидатор и т.д.?
Цитата:

Сообщение от x-yuri
С одной стороны это недостаток, но ведь удобно же.

Ради того что бы один раз написать "удобный" код, придется постоянно его фиксить - сомнительное преимущество. Не лучше ли сразу огородится от всех и делать что хочется?

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

B~Vladi 08.04.2011 16:48

Ты мне лучше расскажи, что не нравится в пространствах имен?

Хоть что-нибудь то скажите, что вы вообще думаете о такой архитектуре?

vflash 08.04.2011 17:31

Цитата:

Сообщение от B~Vladi
Хоть что-нибудь то скажите, что вы вообще думаете о такой архитектуре?

- подозреваю что реализация на клиенте будет работать очень медленно. или делать как GWT.

B~Vladi 08.04.2011 17:43

Цитата:

Сообщение от vflash
реализация на клиенте будет работать очень медленно

Откуда такие подозрения?

Мне кажется наоборот. Вот структура платформы:
V(HTML, CSS, DOM) - C(Platform) - M(Module 1, Module , Module 3...)

Общение между платформой и модулями происходит на объектном уровне. Т.е. быстро. Это ведь не работа с DOM.

После того, как модули сделали все необходимые изменения, контроллер направляет их в представление. Представление пачкой применяет все инструкции уже непосредственно в HTML, CSS и DOM. Понятное дело, что будут реализованы все возможные оптимизации на этом этапе.
Получается, что все действия модулей нагружать не будут.

vflash 08.04.2011 18:07

Покажите мне код )
нужны примеры. а там будет видно как это все красиво и быстро.

B~Vladi 08.04.2011 18:16

Цитата:

Сообщение от vflash
Покажите мне код )
нужны примеры. а там будет видно как это все красиво и быстро.

Будет тебе код. Ещё годик погоди только. Шутка.

Скорость программы обеспечивает алгоритм. Если алгоритм неправильный - страдает реализация.

Чем профессионал отличается от начинающего кодера? Опытный программист способен выбрать правильный алгоритм (ну или направление) ещё до начала написания кода. Он и без кода может дать предварительные оценки.
Так что включи мозг.

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

vflash 08.04.2011 18:34

тому что xml нужно парсить. преобразовывать ваши модули во чтота, что понимает браузер. это все будет DOM манипуляции, а то как работает ишак с DOM методами все знают.

B~Vladi 08.04.2011 18:52

Это уже давно не XML :)
Сейчас речь идет о XHTML.

vflash 08.04.2011 19:17

что XML, что XHTML один черт другого не слаще.

вы пытаетесь сделать вот это - http://ru.amplesdk.com/

B~Vladi 08.04.2011 19:34

То, что они используют пространства имен, не значит что это то же самое. Я всё придумал сам. Это вообще не то.

x-yuri 08.04.2011 22:14

Цитата:

Сообщение от B~Vladi
Ну не пойдет такая попытка. Не видно по коду что к чему относится. Зачем вообще эмулировать пространства имен, если они уже вшиты в браузер, спецификацию, валидатор и т.д.?

почему не видно? То же самое, только вместо двоеточия - дефис. Зачем эмулировать - это уже другой вопрос, раз пространства имен есть в стандарте, лучше использовать их

Цитата:

Сообщение от B~Vladi
Ради того что бы один раз написать "удобный" код, придется постоянно его фиксить - сомнительное преимущество. Не лучше ли сразу огородится от всех и делать что хочется?

согласен, сомнительное

Цитата:

Сообщение от B~Vladi
Ты мне лучше расскажи, что не нравится в пространствах имен?

все нравится :) Просто у меня есть более актуальные проблемы

Цитата:

Сообщение от B~Vladi
Хоть что-нибудь то скажите, что вы вообще думаете о такой архитектуре?

а сложно что-то сказать. Потому что это все пока что теория. Теоретически оно будет лучше, но непонятно для каких проектов (ведь серебрянной пули не существует, м?), насколько удобный будет интерфейс, надо ли будет фиксить ядро и т.д.

Цитата:

Сообщение от B~Vladi
Чем профессионал отличается от начинающего кодера? Опытный программист способен выбрать правильный алгоритм (ну или направление) ещё до начала написания кода. Он и без кода может дать предварительные оценки.
Так что включи мозг.

спорное утверждение, возможность оценки и ее достоверность порпорциальнальна задаче

B~Vladi 10.04.2011 16:52

Цитата:

Сообщение от x-yuri
То же самое, только вместо двоеточия - дефис.

Не тоже самое. Так браузер их понимает на уровне движка, что дает преимущества при поиске узлов. У меня дерево из >2000 нод перебирается за 25мс в ff. При этом ещё много нужной инфы собирается. По сути - это время инициализации платформы + ещё немного на другие расходы. А дальше всё на объектном уровне работает. Кэш.

Цитата:

Сообщение от x-yuri
насколько удобный будет интерфейс

Вот это сейчас самая важная проблема.

SV0L0CH 16.04.2011 16:07

Интересная старая тема. И каково состояние на данный момент? Есть ли готовые варианты реализации?

B~Vladi 16.04.2011 16:36

Есть реализация.
Как я уже говорил, сейчас идет работа над объектной моделью. Если кто не правильно понял - я не пытаюсь создать свой DOM. Мне реально нужна и важна ваша помощь. jQuery - спасательный круг для дибилов, нехуй тратить на него свое время.
Если вы хотите начать создавать веб-ПРИЛОЖЕНИЯ - прошу принять участие.

x-yuri, спасибо за потраченное время и критику.

SV0L0CH 16.04.2011 17:54

B~Vladi,
Меня давно интересует возможность внедрения в xhtml фрагментов с различными пространствами имён и их обработка динамически подгружаемым кодом. Так же интересен сахар для XPath выборок.
Хоть пока и не знаю где это можно применить, но всёравно интересно. Если это то что я думаю, то отпишись в личку.

tenshi 17.04.2011 04:06

Programming languages that barf on a syntax error do so because a partial executable image is a useless thing. A partial document is *not* a useless thing. One of the cool things about XML as a document format is that some of the content can be recovered even in the face of error. Compare this to our binary document friends where a blown byte can render the entire content inaccessible.
---
ну как же? полезность - весч сильно относительная. возьмём простое приложение, которое делает два запроса к бд, первый за сессией, второй за контентом. первый запрос содержит синтаксическую ошибку и падает. но позвольте! можно же выполнить второй запрос и вывести пользователю! давайте сделаем его и выведем пользователю хоть что-то!
и наоборот. какой-то умник написал <script> в результате чего хрен вы получите вместо контента, а ещё десяток всплывающих окошек в нагрузку, и регистрироваться на сервисе вам придётся заново, и извиняться перед друзьями, что завалил их спамом, а ещё не сможешь зайти на свой любимый сайт javascript.ru потому что внезапно стал участником ддос-атаки на него.
мягкость правил приводит к наплевательскому их исполнению. а страдают в итоге пользователи.
===
это уже поинтереснее. Но 1) это проблема решаемая, 2) почему из-за тех, для кого это важно должны страдать все? 3) для тех, для кого это важно - это не проблема, у них есть опытные специалисты и достаточно денег, 4) вместо xss получаем проблему с чисткой контента, создаваемого пользователями
---
1. лучше не допускать проблем, чем решать их после того, как они вылились в массовые беспорядки
2. страдать должен только тот разработчик. который допустил вывод неэкранированных данных и больше никто. ошибки парсинга хмл выявляются очень быстро при первичном тестировании. а при правильно выбранных инструментах исключаются вовсе. на моей памяти небыло ни одного случая связанного с невалидностью отдаваемого хмл. только один раз один умник вставил disable-output-escaping="yes" и благополучно получил уязвимость которая прошла через все этапы тестирования прямиком в лапы злостных кулхацкеров.
3. и эти специалисты не ноют, что битый хмл не будет показан пользователю. потому что знают, что у них он никогда битым не будет. а те, кто ноет - неявно подписываются тем самым под своей профессиональной непригодностью.
4. эту проблему мы получаем независимо от формата передачи. вопрос лишь в том, решать ли её или же стыдливо прятать голову в песок, притворяясь буд-то её на самом деле нет.
===
Кстати, БЭМ, по идее, близок к твоей задумке, только без XHTML-модулей.
---
основное преимущество лего - это возможность привязать сразу несколько компонент к одному тэгу, но одновременно это и его недостаток, так как наложение разных стилей и поведения на один элемент с высокой долей вероятности приводит к конфликтам. в результате всё-равно появляется куча вложенных дивов, дифференциирующих зоны ответственности компонент.
а вот в моей реализации через пространства имён - у каждой компоненты свой тэг, параметры которому задаются аттрибутами. инициализация виджетов происходит по мере загрузки страницы, при удалении из документа - вызывается деструктор.
а знаете как в лего передаются параметры? а вот так: onclick="return {name:'i\-metrika',counter:149814}" мне даже страшно представить как они это формируют с помощью xsl шаблонов о0"
===
Вообще, я говорил не о формате, а о DTD. Т.е. если мы используем документ в формате XHTML (расширение xhtml, content-type: application/xml+xhtml), то это уже указание на формат, а не какое-то там DTD, поэтому и парсится соответственно.
DTD XHTML прижился и исптользуется. Формат XHTML не используется. Потому что ишак клал на него.
Давайте далее, говоря о XHTML, подразумевать соответствие документа с DTD XHTML в формате HTML.
---
миме-тип никаким образом формат менять не может. формат - это прежде всего структура данных. если я jpeg картинку переименую в readme.txt - от этого она не перестанет быть картинкой. не смотря на то, что некоторые просмотрщики картинок не смогут с ним работать. дизайн xhtml специально задумывался таким, чтобы его можно было распарсить как html так и xml парсером. разные методы прасинга разумеется приводят к формированию разных моделей документа. формат - один. парсеров - два. чтобы включить xml парсер достаточно указать тип application/xml - это понимает даже ие. и тут к вашим услугам и возможность объявлять собственные сущности, и валидировать документ налету, и применять xsl трансформации. другое дело, что ие он не понимает xhtml элементы в полученном xml, но для него можно сделать фолбэк в виде простенькой xsl трансформации, которая заставит его воспользоваться html парсером к результату полученному после валидации, подстановки сущностей и xsl трансформации.
===
т.е. раз мы протестировали модуль и валидатор проверил разметку, это значит что больше тестировать нету смысла?
---
есть разные тесты. есть тесты самого модуля, а есть тесты корректности его использования. валидация вполне может справиться со вторым видом тестов. другое дело, что дтд конкретно не хватает для этого мощности. я склоняюсь к тому, что сам модуль должен следить за валидностью используемых им структур данных, так как ограничения могут быть самыми причудливыми.

x-yuri 17.04.2011 11:50

Цитата:

Сообщение от B~Vladi
jQuery - спасательный круг для дибилов

спасибо, посмеялся :) но вторая сторона правды заключается в том, что он позволяет сконцентрироваться на более важных для тебя вещах ;)

а вообще, B~Vladi, советую выложить свой проект на github, если ты хочешь чтобы он быстрее развивался. В частности, ты узнаешь, например, что другие думают об этом. Но возможно что это все превратиться в нечто другое, не то, что ты хотел (чья-то реализация станет популярнее). Но это тоже не плохо, это может указывать на какие-то твои ошибки

Цитата:

Сообщение от B~Vladi
x-yuri, спасибо за потраченное время и критику.

:)

Цитата:

Сообщение от tenshi
ну как же? полезность - весч сильно относительная. возьмём простое приложение, которое делает два запроса к бд, первый за сессией, второй за контентом. первый запрос содержит синтаксическую ошибку и падает. но позвольте! можно же выполнить второй запрос и вывести пользователю! давайте сделаем его и выведем пользователю хоть что-то!
и наоборот. какой-то умник написал <script> в результате чего хрен вы получите вместо контента, а ещё десяток всплывающих окошек в нагрузку, и регистрироваться на сервисе вам придётся заново, и извиняться перед друзьями, что завалил их спамом, а ещё не сможешь зайти на свой любимый сайт javascript.ru потому что внезапно стал участником ддос-атаки на него.
мягкость правил приводит к наплевательскому их исполнению. а страдают в итоге пользователи.

первый вариант - не понял: 1) он про ЯП, а не про документ; 2) и даже если превратить этот пример во что осмысленное, то получится, что: если при выдаче резальтатов поиска произошла ошибка - это не повод ничего не отображать. Второй довод имеет право на существование, но: 1) почему пользователи имеют возможность post'ить html-код, почему они не используют твой markdown-редактор, м? ;) 2) почему это должно быть обязательным для всех сайтов? 3) в конце концов, защиты от XSS не существует?

Цитата:

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

это не однозначное решение проблемы, это решение одной проблемы и появление другой

Цитата:

Сообщение от tenshi
2. страдать должен только тот разработчик. который допустил вывод неэкранированных данных и больше никто. ошибки парсинга хмл выявляются очень быстро при первичном тестировании. а при правильно выбранных инструментах исключаются вовсе. на моей памяти небыло ни одного случая связанного с невалидностью отдаваемого хмл. только один раз один умник вставил disable-output-escaping="yes" и благополучно получил уязвимость которая прошла через все этапы тестирования прямиком в лапы злостных кулхацкеров.

ога, пользователи недоступного сайта ни разу не пострадают, они просто уйдут на другой сайт. To err is human ;)

Цитата:

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

ну да, ну да, потому что эти специалисты - уже не люди :) А если серьезно, 1) на чем основана эта уверенность? 2) профессиональной непригодностью для чего? Для того чтобы разработать систему управления полетом космического корабля, бороздящего просторы галактики? p.s. программисты не ноют ;)

Цитата:

Сообщение от tenshi
основное преимущество лего - это возможность привязать сразу несколько компонент к одному тэгу, но одновременно это и его недостаток, так как наложение разных стилей и поведения на один элемент с высокой долей вероятности приводит к конфликтам. в результате всё-равно появляется куча вложенных дивов, дифференциирующих зоны ответственности компонент.
а вот в моей реализации через пространства имён - у каждой компоненты свой тэг, параметры которому задаются аттрибутами. инициализация виджетов происходит по мере загрузки страницы, при удалении из документа - вызывается деструктор.
а знаете как в лего передаются параметры? а вот так: onclick="return {name:'i\-metrika',counter:149814}" мне даже страшно представить как они это формируют с помощью xsl шаблонов о0"

ну это уже не ко мне вопрос: в тему вызывается Kolyaj. Я БЭМ не использую, разве что может быть некоторые идеи мне близки, те что не касаются всяких оптимизаций. А почему ты решил, что они это с помощью xsl проворачивают?

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

tenshi 17.04.2011 12:37

что такое "защита от хсс"?

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

у них большинство сервисов на хсл-е

если бы правила парсинга хтмл не были так сложны в сети меньше бы было дырявых сайтов.

x-yuri 17.04.2011 14:31

Цитата:

Сообщение от tenshi
что такое "защита от хсс"?

хм, и где подвох? Защита от внедрения на сайт кода злоумышленником. В контексте нашей беседы это, например, htmlpurifier

Цитата:

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

боюсь причинно-следственная связь осталась за кадром

Цитата:

Сообщение от tenshi
если бы правила парсинга хтмл не были так сложны в сети меньше бы было дырявых сайтов.

и сеть бы развивалась другими темпами

tenshi 17.04.2011 15:27

отлично, а теперь попробуй с помощью htmlpurifer сделать невалидный хмл

мне как-то пох с какой скоростью развивается сеть. в ней и так полно дерьма. куда уж больше?

x-yuri 17.04.2011 19:21

Цитата:

Сообщение от tenshi
мне как-то пох с какой скоростью развивается сеть. в ней и так полно дерьма. куда уж больше?

чтд

Цитата:

Сообщение от tenshi
отлично, а теперь попробуй с помощью htmlpurifer сделать невалидный хмл

не понял, при чем тут xml и _не_валидный?

tenshi 18.04.2011 02:09

при том, что на выходе он генерирует ххтмл фрагмент

x-yuri 18.04.2011 11:59

Цитата:

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

Цитата:

Сообщение от x-yuri
на чем основана эта уверенность?

Цитата:

Сообщение от tenshi
что такое "защита от хсс"?

это типа такой окольный способ ответа на мой вопрос?

Цитата:

Сообщение от tenshi
ошибки парсинга хмл выявляются очень быстро при первичном тестировании. а при правильно выбранных инструментах исключаются вовсе.

а что это за правильно выбранные инструменты и что ты вообще можешь посоветовать в плане xhtml?

B~Vladi 18.04.2011 12:13

Цитата:

Сообщение от x-yuri
советую выложить свой проект на github

Пока рано, а так да.
Цитата:

Сообщение от x-yuri
Но возможно что это все превратиться в нечто другое, не то, что ты хотел (чья-то реализация станет популярнее).

Главное, что бы идеология и архитектура сохранилась, а какая будет реализация - не важно.
Цитата:

Сообщение от x-yuri
на чем основана эта уверенность?

Ну так то он всё правильно говорит. Не умеешь работать с форматом - не берись.

Ну вот :(
Ещё кое-что надумал, пока пытался заснуть вчера... Асинхронность. Например (из прошлого html-кода):

this.parent.item.Style({
  display: 'none'
}, function(dataObject, property){
  // Представление изменилось
});

или:

this.parent.item.Event({
  click: false
}, function(dataObject, property){
  // Обработчик установлен
});


Так как всё происходит после выполнения кода, в недрах контроллера (платформы), сразу обработать результат не получится. Например, часто бывает нужно узнать размеры элемента сразу после изменения данных. Архитектура (которая у меня в голове и в черновиках) это позволяет сделать. Как вам такой код?!

tenshi 18.04.2011 12:29

на тот вопрос я не отвечал, так как не вижу смысла

любые инструменты, которые работают с документом не как со строкой, а как с деревом.

события надо не только вешать, но и убирать, поэтому лучше что-то типа такого:

var clickSpy= Spy( elem, 'click', function(){} ).listen() // создали и запустили прослушку
...
clickSpy.forget() // забили на прослушку
...
clickSpy.scream() // кричим другим агентам

B~Vladi 18.04.2011 12:36

Цитата:

Сообщение от tenshi
события надо не только вешать, но и убирать

delete this.parent.item.Event().click;


Цитата:

Сообщение от tenshi
clickSpy.scream() // кричим другим агентам

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

x-yuri 19.04.2011 00:40

Цитата:

Сообщение от B~Vladi
Ещё кое-что надумал, пока пытался заснуть вчера... Асинхронность. Например (из прошлого html-кода):

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

var AsyncChain = new Class({
	Implements: [Events, Options],
	
	_chain: [],
	_state: {},
	
	initialize: function( options ){
		this.setOptions( options );
	},
	
	add: function( f ){
		this._chain.push( f );
		return this;
	},
	
	run: function(){
		run.of(this)(0);
		return this;
		
		function run( i ){
			var f = this._chain[i];
			if( ! f )
				return;
			f.of(this)( run.of(this).pass(i+1) );
		}
	},
    
	clear: function(){
		this._chain = [];
		return this;
	},
	
	set: function( options ){
		$extend( this._state, options );
		return this;
	}
});


пример использования:
var chain = new AsyncChain();
        chain.setOptions({
                'onFailure': onFailure.of(this).pass(chain),
                'onCancel': onCancel.of(this).pass(chain)
        })
             .set( options )
             .add( this._disableLink )
             .add( this._setPhotoUrl )
             .add( this._setPhotoDownloadUrl )
             .add( this._showThrobber )
             .add( photosession.getThumbnailPath )
             .add( photosession.setPhotoUploadUrl )
             .add( photosession.loadPhoto )
             .add( photosession.loadCropResize )
             .add( this._hideThrobber )
             .add( this._showDialog )
             .add( photosession.cropResize )
             .add( photosession.setThumbnailFormField )
             .add( this._loadThumbnail )
             .add( this._showThumbnail )
             .add( this._closeDialog )
             .add( this._enableLink )
             .run();

B~Vladi 19.04.2011 17:38

Не не не, Девид Блейн.

Вот, например, есть объект, описывающий тег:
var data = {
  value: 'text',
  display: false
}


Код модуля:
function module(data){
  // Изменяем данные
  data.text = 'new text';
  data.display = true;
}


Как это всё выглядит с наружи:
var data = getData(); // получаем объект data

// Ситуация - обрабатываем событие. Для этого передаем объект data всем модулям, которым он принадлежит
var modulesLength = modules.length;
while(modulesLength--){
  modules[modulesLength](data); // Модули сделали всё, что им необходимо
}

// Обновляем представление в соответствии с объектом data.
update(data);


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

Цитата:

Сообщение от x-yuri
ну асинхронность она определенно усложняет.

Согласен. Это выглядит как асинхронность на уровне кода, но по сути это событие.

x-yuri 19.04.2011 19:46

Цитата:

Сообщение от B~Vladi
Не не не, Девид Блейн.

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

Цитата:

Сообщение от B~Vladi
Что бы можно было учесть эту ситуацию - я и предложил это решение.

но у тебя же нету другого выхода?


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