Dojo

Dojo to jeden z frameworków JavaScript, który skupia swoją uwagę na rozwoju stron WWW. Pierwsze wydanie ukazało się w 2005 roku, udostępnione na zmodyfikowanej licencji BSD (Berkeley Software Distribution). Jest środowiskiem open-source dzięki czemu cały zestaw narzędzi Dojo (Dojo Toolkit) użytkownicy mogą łatwo pobierać jako ZIP. Dojo posiada około trzy tysiące różnych modułów JavaScript. Między innymi składa się z takich części jak:

  • Dijit to biblioteka modułów interfejsu użytkownika dla widżetów i układu
  • Dojo zawiera rdzeń oraz większość modułów nie-wizualnych
  • Dojox wyposażony jest w moduły, które nie są jeszcze uznawane za stabilne (na tyle by uwzględnić je w dojo lub dijit)
  • Util zawiera narzędzia do budowania, przykładowo: dokumentacja, optymalizacja, testowania czy sprawdzanie stylu.

Dojo jako framework między innymi przedstawia użytkownikowi streszczenia różnic pomiędzy różnymi przeglądarkami tak by dostarczyć te interfejsy API, które będą rzeczywiście działać na wszystkich przeglądarkach. Dodatkowo ustanawia ramy dla definiowania modułów kodu oraz zarządzania ich wzajemnymi zależnościami. Oprócz tego udostępnia narzędzia służące do budowani optymalizacji JavaScript i CSS ale też do testowania jednostkowego czy generowania dokumentacji. Zapewnia także bogaty pakiet powszechnie użytkowych klas narzędzi oraz widżetów interfejsu użytkownika. Widżety Dojo to komponenty, które składają się głównie z kodu JavaScript, deklaracji stylów CSS oraz znaczników HTML. Udostępniają między innymi takie interaktywne funkcje jak: dynamiczne wykresy, animowane efekty, sortowane tabele, rysunki wektorowe 2D czy menu, zakładki i etykiety narzędzi.

Framework ten oferuje także system pewnych pakietów, które ułatwiają użytkownikowi modularny rozwój funkcjonalności indywidualnych w podpakietach. Pakiety te mogą składać się z wielu plików i mogą również określać, które pliki stanowią cały pakiet. Dojo udostępnia również programistom mechanizm do tworzenia profili. Oznacza to, że system budujący przyjmuje listę pakietów i używa Rhino (silnik JavaScript) do stworzenia pojedynczego skompresowanego pliku JavaScript zawierającego wspomniane pakiety i ich wszystkie możliwe zależności. Ciekawą funkcją tego frameworka jest też to, że posiada lokalną kopię zapasową Dojo Storage, która przechowuje dane po stronie klienta.

Niektórzy programiści krytykują wcześniejsze wersje Dojo za to, że były nieporęczne i dość powolne jeśli chodzi o ładowanie. Zmianę przyniósł Dojo 1.7 wprowadzając AMD czyli definicję modułu asynchronicznego oraz ładowarkę „nano”. Dodatkowo dużym minusem tego frameworka była trudność w uczeniu się obsługiwania go. Obecne książki posiadają przestarzałe technologie i nie są aktualne co również utrudnia naukę.

Przykładowy kod w Dojo

Dojo Przykład #1

  <!DOCTYPE html>
  <html>
  <head>
      <meta charset="utf-8">
      <title>Hello World!</title>
  </head>
  <body>
      <h1 id="greeting">Hello</h1>
      <!-- load Dojo -->
      <script src="//ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojo/dojo.js" data-dojo-config="async: true"></script>
      <script>
          require([
              'dojo/dom',
              'dojo/dom-construct'
          ], function (dom, domConstruct) {
              var greetingNode = dom.byId('greeting');
              domConstruct.place('<em> World!</em>', greetingNode);
          });
      </script>
  </body>
  </html>
  
Dojo Przykład #2

  require([
      'dojo/dom',
      'dojo/fx',
      'dojo/domReady!'
  ], function (dom, fx) {
      var greeting = dom.byId('greeting');
      greeting.innerHTML += ' from Dojo!';
  
      fx.slideTo({
          node: greeting,
          top: 10,
          left: 20
      }).play();
  });