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.


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