Posts Tagged ‘javascript’

Фреймворки для nodejs

Суббота, Январь 9th, 2010

logo
Я просто оставлю это здесь. Список фреймворков для nodejs, которые я нашёл:

  • Намётки и размышления одного дядюшки Бена, который пытается создать свой фреймворк на nodejs. Смешно, он обозвал Дэвида Хэйнемайера Хэнсона тупицей, это повеселило :) Готового кода я там так пока и не нашел. А вот страничка проекта.
  • Simplex - здесь есть интересные куски кода, стоит посмотреть. Хотя это так - не фреймворк, а просто эксперимент, созданный за пару вечеров.
  • Raccoon - эта штука уже посерьёзней остальных. Буду её исследовать.
  • Вот еще один фреймворк, nerve
  • В комментариях Kuroki Kaze подсказывает, что есть еще JSAN. опенсурсовая библиотека javascript, но честно говоря, не слишком много я полезного там увидел.
  • Список проектов на github, посвященных nodejs

Если кто знает еще фреймворки для nodejs, буду признателен за ссылки в комментах.

Вообще, мне кажется, серверное программирование на js штука весьма перспективная. Не хватает только мощного фреймворка, по типу Zend или пакетов CPAN, как в Perl, или Gems, как в Ruby. Но это вопрос времени и я думаю, на эту тему стоит написать отдельный пост.

Интересная штука этот Rhino, или мысли о серверной разработке на Javascript

Пятница, Декабрь 18th, 2009

Давеча посмотрел на исходный код проекта Etherpad, который гугл недавно свернул. Долго искал внутри проекта что-то похожее на скрипты питона или чего либо еще модного, пока до меня не дошло: проект написан на Javascript. Достаточно было открыть любой файл с расширением js.

Как оказалось, проект написан на Rhino. Это такая имплементация javascript’а на Java. Хоть я в жизни ничего и никогда не писал на Java, но носорог меня определенно заинтересовал. Вообще, классная же идея, писать и на стороне сервера и на стороне клиента на одном языке, на Javascript?

По-моему махровому мнению - это круто. Я слышал краем глаза про такой проект, Jaxer, который позволяет использовать Javascript на стороне сервера, но не щупал его.

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

Update:

Нашел классный проект Nodejs, это веб-сервер, использующий гугловский джаваскриптовый движок V8. Очень интересная разработка, попробую её собрать под nix и попробовать наваять какую-нибудь простую штуку. Наверное, получится пост.

How does the event bubbling works in Javascript?

Суббота, Ноябрь 28th, 2009

Few people knows how events works in javascript. Currently, many people use frameworks, and do not realize how event works, so they are spend much time on simple things.

I’ll tell about a widely known in narrow circles thing such as event bubbling. What I’m talking about?

When we are click on any element on the web page, the event is raised on all the parent nodes of clicked element, until it reaches the document node. This is event bubbling as is.
Let’s see clearly how it works, it’s better to see than tell a thousand words.
(далее…)

Event bubbling в Javascript - что это такое?

Пятница, Ноябрь 27th, 2009

Мало кто знает, как работают события в Javascript. Сейчас же модно юзать фреймворки, вот люди и не задумываются, как оно там работает и зачастую, тратят очень много времени на простые вещи.

Я расскажу про такую широко известную в узких кругах фишку, как event bubbling. Что это вообще такое?

Когда мы кликаем по-какому либо элементу на странице, то событие поднимается по всем родительским узлам кликнутого элемента, пока не дойдет до узла document. Это и есть event bubbling.
Посмотрим наглядно как это работает, ведь лучше увидеть, чем сказать тысячу слов.

Есть HTML:

<div id="dialog">
    I'm a absolutely positioned dialog. So click me!
</div>

Есть CSS:

<style type="text/css">
#dialog {
    padding: 200px;
    position: absolute;
    top: 100px;
    left: 100px;
    border: 1px solid #000;
    background: #ddd;
}
</style>

И, самое главное, есть javascript (JQuery):

<script type="text/javascript">
$(document).ready(function() {
    $('#dialog').click(function(e) {
        alert('Clicked on dialog!');
    })

    $(document).click(function(e) {
        alert('Clicked on document!');
    })
});
</script>

Как видно по коду, у нас навешаны колбэки на клик по диалогу, а так же на клик по документу. Давайте теперь откроем рабочий пример и кликнем по диалогу. Что получилось? А получилось 2 алерта, алерт диалога и алерт документа. Почему так вышло, мы же кликнули только по диалогу? Причина этого именно в event bubbling’е.

Давайте теперь сделаем так, чтобы при клике по диалогу появлялся только алерт этого диалога. Все, что нужно сделать, это отменить event bubbling, чтобы он не поднимался вверх по DOM узлам. Сделать это можно просто добавив e.stopPropagation() в колбэк диалога. Все. Давайте посмотрим второй пример.

Вот так, вроде простая вещь - но знают о ней немногие. Ее знание сильно облегчает разработку на javascript. Как, например, без особых извращений сделать так, чтобы какой-либо элемент на странице скрывался при клике вне этого элемента? Только через event bubbling!

До скорого.