Компания Twitter, развивающая популярный сервис микроблогов, анонсировала (http://engineering.twitter.com/2013/01/introducing-flight-we...) новый событийно-ориентированный JavaScript-фреймворк Flight (http://twitter.github.com/flight/), код которого открыт (https://github.com/twitter/flight) под лицензией MIT. Фреймворк составляет основу клиентской части кода, используемого в новом варианте сайта Twitter, который был введён в строй в прошлом году. Работа Flight протестирована во всех современных браузерах, в том числе в Chrome, Firefox, Safari, Opera и IE7. Из зависимостей используются библиотеки ES5-shim (https://github.com/kriskowal/es5-shim) и JQuery (http://jquery.com).В отличие от других фреймворков, Flight не навязывает и не предоставляет какие-то конкрентые методы для рендеринга или получения данных. Фреймворк не заботится о том, как именно организован маршрут обработки запросов, какие шаблонизаторы используются и генерируется ли HTML на стороне сервера или клиента. Вместо этого Flight базируется на организации работы поверх уже присутствующей модели DOM, привязывая требуемую функциональность непосредственно к узлам DOM. Подобный подход позволяет не только избежать необходимости задействования дополнительных структур данных, усложняющих архитектуру web-приложения, но и упростить привязку дополнительной функциональности для уже существующих web-приложений.
Архитектура Flight (https://github.com/twitter/flight/blob/master/README.md) предусматривает строгую изоляцию всех компонентов-обработчиков, которые не могут напрямую взаимодействовать друг с другом, не зависят от других компонентов и не являются элементами дерева объектов. Вместо этого, компоненты должны оформлять действия в виде широковещательных анонсов событий, на которое должны подписываться заинтересованные в них другие компоненты. Когда компонент инициирует событие, он не имеет представления о том, кем и как будет обработано данное событие, что позволяет разрабатывать каждый компонент изолировано, без оглядки на особенности реализации других компонентов - каждый компонент оформляется и распространяется в виде обособленного JavaScript-модуля.
<center><a href="http://3.bp.blogspot.com/-kOtb8efsqvs/UQqgWfqxXhI/AAAAAAAAAd... src="http://www.opennet.ru/opennews/pics_base/0_1359713696.png" style="border-style: solid; border-color: #e9ead6; border-width: 15px;" title="" border=0></a></center>
Подписка на обработку определённых типов событий осуществляется с использованием привязки к элементам дерева DOM, при этом таким способом организуется как подписка на нативные события, связанные с узлами DOM, так и на события генерируемые другими компонентами, и те и другие события обрабатываются идентично. В простейшем случае, для реализации нужной функциональности достаточно создать новый компонент и привязать его к DOM-узлу, после чего компонент будет получать связанные с узлом события и сможет манипулировать любыми элементами этого узла. Пример простейшего web-приложения, созданного с использованием Flight, можно посмотреть
здесь (https://github.com/twitter/flight/tree/gh-pages/demo), демонстрация работы данного приложения доступна на данной странице.
URL: http://engineering.twitter.com/2013/01/introducing-flight-we...
Новость: http://www.opennet.ru/opennews/art.shtml?num=35985