Javascript.RU

Голосование: Выберите свой любимый фреймворк
Опции опроса
Выберите свой любимый фреймворк

Создать новую тему Ответ
 
Опции темы Искать в теме
  #81 (permalink)  
Старый 26.11.2012, 12:51
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Сообщение от tenshi
а я не использую выборку по селекторам
Сообщение от tenshi
и айдишники не использую тем более)
можно подробнее?
Ответить с цитированием
  #82 (permalink)  
Старый 26.11.2012, 16:11
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

можно. к каждому элементу в момент появления его в доме привязываются яваскриптовые компоненты. каждая умеет запускать всплытие события чтобы передавать сообщения предкам. а также умеет следить за тем какие элементы находятся внутри (аналогично form.elements или document.frames), чтобы в случае необходимости брать из них данные или посылать им события. с внешним миром компоненты общаются исключительно посредством событий. на корневой элемент вешается компонента для общения с сервером и другими внешними апи. не пойманное событие приводит к исключению в консоли.
__________________
.ня
Ответить с цитированием
  #83 (permalink)  
Старый 26.11.2012, 16:13
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

а, ну и подцепляются компоненты на основе предикатов. в принципе можно сделать css-предикаты, но это слишком избыточно. вполне хватает имени тэга и аттрибутов.
__________________
.ня
Ответить с цитированием
  #84 (permalink)  
Старый 29.11.2012, 20:51
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Я думаю много можно хвалить тот или иной фреймворк. Важно понимать что все относительно, и каждый инструмент нужно рассматривать в том или ином контексте. Я думаю самое частое применение javascript - это контентые вебсайты (frontend), где основные необходимости - это манипуляции с DOM, анимация css-свойств, асинхронные запросы и тп. Причем нередко (но все реже) применяется ненавязчивый js. Такие сайты работают при включенном расширении NoScript.

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

Структура таблицы проста - идет основная строка, две три расширенных, далее основная, снова расширенные и тд.

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

Разметка уже есть и менять ее нельзя. Таблицы помечены классом collapsible. Вот разметка:

<table class="collapsible">
	<thead>
		<tr>
			<th></th>
			<th>Тип</th>
			<th>Количество пассажирских мест</th>
			<th>Дальность полета (км)</th>
			<th>Вместительность багажника (м³)</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td><img src="images/planes/ececuliners.png" alt="Execuliners" /></td>
			<td><span>Execuliners</span></td>
			<td><span>50</span></td>
			<td><span>11520</span></td>
			<td><span>18.1</span></td>
		</tr>
		<tr>
			<td colspan="2">Airbus Corporate Jetliner (ACJ)</td>
			<td>43</td>
			<td>11297</td>
			<td>9.6</td>
		</tr>
		<tr>
			<td colspan="2">Boeing Business Jet (BBJ)</td>
			<td>50</td>
			<td>11519</td>
			<td>17.5</td>
		</tr>
		<tr>
			<td colspan="2">Embraer Lineage 1000</td>
			<td>19</td>
			<td>7800</td>
			<td>18.1</td>
		</tr>
	</tbody>
	<tbody>
		<tr>
			<td><img src="images/planes/ececuliners.png" alt="Execuliners" /></td>
			<td><span>Execuliners</span></td>
			<td><span>50</span></td>
			<td><span>11520</span></td>
			<td><span>18.1</span></td>
		</tr>
		<tr>
			<td colspan="2">Airbus Corporate Jetliner (ACJ)</td>
			<td>43</td>
			<td>11297</td>
			<td>9.6</td>
		</tr>
		<tr>
			<td colspan="2">Boeing Business Jet (BBJ)</td>
			<td>50</td>
			<td>11519</td>
			<td>17.5</td>
		</tr>
		<tr>
			<td colspan="2">Embraer Lineage 1000</td>
			<td>19</td>
			<td>7800</td>
			<td>18.1</td>
		</tr>
	</tbody>
	<tbody>
		<tr>
			<td><img src="images/planes/ececuliners.png" alt="Execuliners" /></td>
			<td><span>Execuliners</span></td>
			<td><span>50</span></td>
			<td><span>11520</span></td>
			<td><span>18.1</span></td>
		</tr>
		<tr>
			<td colspan="2">Airbus Corporate Jetliner (ACJ)</td>
			<td>43</td>
			<td>11297</td>
			<td>9.6</td>
		</tr>
		<tr>
			<td colspan="2">Boeing Business Jet (BBJ)</td>
			<td>50</td>
			<td>11519</td>
			<td>17.5</td>
		</tr>
		<tr>
			<td colspan="2">Embraer Lineage 1000</td>
			<td>19</td>
			<td>7800</td>
			<td>18.1</td>
		</tr>
	</tbody>
</table>


Первый tr внутри каждого tbody - основная строка, последующие - дополнительные, их нужно скрыть.
Ответить с цитированием
  #85 (permalink)  
Старый 29.11.2012, 21:01
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

а чего это разметку менять нельзя? я так не играю)
__________________
.ня
Ответить с цитированием
  #86 (permalink)  
Старый 29.11.2012, 21:53
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Скажем, не хватает прав на редактирование документов А вот на правку шаблона - хватает.

Да и не наша задача редактировать контент. Контент уже есть, нужно только навесить скрипт.
Ответить с цитированием
  #87 (permalink)  
Старый 29.11.2012, 22:17
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

> Скажем, не хватает прав на редактирование документов
и в чём проблема их получить?

> Да и не наша задача редактировать контент. Контент уже есть, нужно только навесить скрипт.
это какая-то сферическая задача в вакууме. высосанные из пальца задачи решать совершенно не интересно.
__________________
.ня
Ответить с цитированием
  #88 (permalink)  
Старый 29.11.2012, 22:25
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Мы находимся на javascript форуме, а не на html, а потому, обсуждать верстку не имеет смысла. Разметка таблицы полостью достаточна для решения задачи. Таблиц может быть много, и никто не собирается придумывать им id или проставляеть классы строкам. Задача была у меня конкретно такая, я привел ее как есть.

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

Видимо зря я этот пример тут запостил. Очевидно что эту задачу проще всего решить на jQuery (что я и сделал). Либо любая либа позволяющая выборку по селектору (mootools например). В общем бред.

Кстати, сначала думал о своей идее - pure js + polyfill's . Фигня все это. С NodeList работать неудобно (через циклы или метод forEach из прототипа массива), стили изменять не очень удобно, dom travelsing тоже неудобный, XHR тож избыточный, для анимации всеравно нужно что-то либное. В общем код получается очень раздутый и писать его долго. Плюс костыли для ие будут весить немало. Я думаю неплохо было бы использовать что-то типа zepto.js, но с подгружаемыми костылями для IE. В общем проще всего пока использовать jQuery. С версией 2.0 она должна заметно похудеть.

Последний раз редактировалось danik.js, 29.11.2012 в 22:42.
Ответить с цитированием
  #89 (permalink)  
Старый 30.11.2012, 00:08
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

интересно как ты в этом случае будешь менять картинку группы при её разворачивании/сворачивании?

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

а как будешь реализовывать двухуровневое разворачивание?
__________________
.ня
Ответить с цитированием
  #90 (permalink)  
Старый 30.11.2012, 00:17
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

tenshi, не перегибай палку )
Это не интерфейс приложения, это всего лишь табличка с простой инфой, выложенная на вебсайте. Нет тут флагов, не нужна картинка и двухуровневая вложенность.

Я понял к чему ты клонишь - тут нужны qooxdoo, ExtJS или dojo. (кстати почему qooxdoo тут не освещается вовсе? помоему достойный фреймворк, даже интереснее ExtJS)

Коли была бы такая задача -я бы выбрал что-нибудь их них.

Собственно о том и речь. Любой здравый человек гвозди забивает молотком, а шурупы вворачивает шуруповертом. И тут не вопрос предпочтений, тут все зависит от задач.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрыть ссылку на js Googert Общие вопросы Javascript 10 21.02.2012 17:29
вызов функции, из JS генерируемого на сервере subaru AJAX и COMET 1 12.07.2008 13:44
опубликуйте пожалуйста функционал JS scuter Сайт Javascript.ru 21 05.06.2008 17:44
ошибка js во фрейме friend Общие вопросы Javascript 3 02.06.2008 16:55
подключение стороннего js скрипта friend Общие вопросы Javascript 2 24.05.2008 19:51