Enyo to wieloplatformowy framework służący do tworzenia aplikacji w JavaScript. Jest udostępniony na licencji Apache 2 a jego pierwsze wydanie ukazało się w 2011 roku. Początkowo został opracowany przez firmę Palm, natomiast później został nabyty przez firmę Hewlett-Packard. Obecnie jest sponsorowany przez Hewlett-Packard oraz LG Electronics.
Enyo to otwarta platforma, która jest zorientowana obiektowo i opiera swoją strukturę na modułach. Modularność ułatwia użytkownikowi funkcjonowanie aplikacji w niezależnych blokach konstrukcyjnych, które można łatwo ponownie wykorzystać i utrzymać. Oznacza to, że możliwe jest także osadzanie pełnych aplikacji Enyo w elementach DOM istniejących stron internetowych. Główny kod Enyo obejmuje cztery główne obszary funkcjonalne:
- model obiektu (większość kodu definiowana jest przy użyciu typów, które tworzą różne obiekty po wywołaniu operatora, enyo umożliwia także proste tworzenie nowych rodzajów w oparciu o istniejące typy);
- renderowanie HTML (właściwości są często zmieniane przed renderowaniem i nie są one od razu renderowane, należy samodzielnie wywołać metodę, stanowi to optymalizację dzięki czemu programiści zaoszczędzają dużo przy dodawaniu składników, czyli zamiast renderowania w kółko, jest ono opóźniane i robione dopiero gdy cały zestaw będzie gotowy);
- składniki i wysyłka zdarzeń (Enyo udostępnia własne rozszerzenie zdarzenia w standardowym modelu zdarzenia HTML DOM, wspiera to routing zdarzeń pomiędzy elementami sterującymi i komponentami oraz jednocześnie ułatwia obsługę syntetycznych zdarzeń; jednym z parametrów do obsługi zdarzeń jest obiekt będący źródłem zdarzenia, natomiast drugim parametrem jest obiekt zdarzenia);
- obiekty Async i Ajax (Async- moduł narzędziowy, który udostępnia proste ale jednocześnie potężne funkcje do pracy z asynchronicznym kodem JavaScript / Ajax – sposób tworzenia aplikaci internetowych w którym interakcja użytkownika i serwera odbywa się asynchronicznie bez przeładowywania całęgo dokumentu).
Framework wyposażony jest w mechanizm zależności (package.js) po to by pozwolić na podstawowe modularne podejście do tworzenia aplikacji. Oprócz tego w Enyo nie używa się szablonów, czyli zamiast enyo.Controls renderują się do DOM w oparciu o hierarchię rodziców w strukturze aplikacji. Czyli enyo.Control jest składnikiem kontrolującym wyżej wymieniony węzeł DOM. Wszystkie elementy sterujące są ogólnie widoczne i użytkownik może współdziałać z nimi bezpośrednio. Struktura projektowana jest przez programistów za pomocą obiektów JavaScript poprzez dodawanie metod i funkcjonalności.
Obecnie Enyo rozwija się dosyć dynamicznie o czym świadczą wprowadzane biblioteki. Między innymi możemy wymienić Onyx, który jest biblioteką elementów interfejsu użytkownika. Korzystają z niej programiści podczas budowania aplikacji.
Przykładowy kod w Enyo
Enyo Przykład #1
enyo.kind({
name: "SearchComponent",
kind: enyo.Control,
components: [
{tag: "input"},
{tag: "button", content: "Search"},
{tag: "button", content: "Clear"}
]
});
new SearchComponent().write();
Enyo Przykład #2
enyo.kind({
name: "App",
kind: enyo.Control,
classes: "onyx",
components: [
{ kind: "enyo.Image", name: "logo", src: "image1.jpg", fit: true },
{ kind: "onyx.Toolbar", components: [
{ kind: "onyx.Button", content: "Rotate +", onclick: "rotateC" },
{ kind: "onyx.Button", content: "Rotate -", onclick: "rotateA" },
{ kind: "onyx.Button", content: "Skew X +", onclick: "skewXInc" },
{ kind: "onyx.Button", content: "Skew X -", onclick: "skewXDex" },
]}
]
});