Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Веб-программирование > JavaScript / HTML

JavaScript / HTML Создание динамической разметки страниц

Ответ
 
Опции темы
Старый 13.02.2013, 16:41   #1
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
events

Ссылка: https://github.com/dude-seriously/be...t/js/events.js

JS достаточно динамичный и учитывая что это однопоточный процесс с внутренней очередью задач.

События - очень популярная парадигма в программировании, и JS тут очень хорошо справляется с этими задачами.
В jQuery есть куча helper'ов для работы с событиями, включая стандартные DOM, например:
$('.button').click(function() {
  // ...
});

$('.button').bind('click', function() {
  // ...
});
Кстати вот эти две записи идентичны. Та что выше - shorthand для очень популярного имени события.

В Node.js есть также отличные события, и работа с ними порой удобнее.

Но что если нужно работать со своими функциями и событиями, писать постоянно:
$(this).trigger('hit');
И затем:
var player = new Player(...);
$(player).bind('hit', function() {
  // ...
});
Немного не читабельно, т.к. постоянно эти $(), а ещё Node.js использует более интуитивные имена для работы с событиями: emit, on, once.

Я решил написать простой и мелкий код по событиям, а также и глобальным событиям.
Код тут: https://github.com/dude-seriously/beat-em-up/blob/master/client/js/events.js

Используется очень просто.
Для глобальных событий:
events.emit('player:create', player);
И для подписки:
events.on('player:create', function(player) {
  // ...
});
Присоединение событий к функции (классу) очень эффективно и не бъёт по памяти при создании каждого экземпляра класса:
function Player() {
  events.add(this);
  this.x = 0;
  this.y = 0;
  events.emit('player:create', this);
}
events.implement(Player);
Вот определение класса Player, с присоединением событий к классу.
events.add(this); - создаёт переменную событий (this.events).
events.implement(Player); - назначает prototype функции к самому классу а не функции к экземпляру, что сильно улучшает производительность работы с созданием экземпляра и доступа к методам, по сравнению если бы создавались функции индивидуально к каждому экземпляру, как это делается в большинстве библиотек событий.

Знаю что тут мало JS кодеров, но те что есть, что думаете?

Последний раз редактировалось moka, 13.02.2013 в 23:21.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 09:03.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com