Enyo

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" },
      ]}
    ]
  });