Od kilku lat staram się zgłębiać wiedzę z zakresu tworzenia stron internetowych, odkładając tym samym naukę innych języków programowania. Bardzo często doskwierał mi brak wiedzy i doświadczenia w zakresie tworzenia tak zwanych „aplikacji okienkowych”. Teraz jednak może się to zmienić, gdyż odkryłem bardzo ciekawe narzędzie jakim jest projekt NodeWebkit.

Intuicyjnie NodeWebkit możemy określić jako połączenie serwera Node.js z silnikiem renderującym strony internetowe Webkit, z którego korzysta Safari, oraz Chromium na bazie którego został przygotowany ten projekt. Dzięki niemu możemy w bardzo prosty sposób przygotować całkiem funkcjonalną aplikację działającą niczym natywny program, a to wszystko za sprawą Node.js i jego możliwościom przeprowadzania operacji I/O (wejścia/wyjścia). Node.js możemy wykorzystywać tu z poziomu zwykłych dokumentów HTML.

– Co robisz? – Piszę HTML i CSS programu. – Co?!

Do stworzenia programu, wystarczy przygotować zaledwie dwa pliki – index.html (czy czegoś Wam to nie przypomina? ;)) zawierający pierwszy-główny widok programu oraz package.json, który przechowywać będzie informacje na temat aplikacji (np. rozmiar okna, jego domyślny tytuł itp.). Następnie korzystając z odpowiednich bibliotek i/lub API elementów HTML5, możemy przygotować pełnoprawny program.

Praca z kodem takiej aplikacji do złudzenia przypomina tworzenie stron internetowych – strukturę dokumentu przygotowujemy przy pomocy HTML, wygląd elementów definiujemy przy pomocy CSS, a zdarzenia programujemy w JavaScript. W zasadzie jedynym dodatkiem są tutaj funkcje dostarczone przez Node.js jak np. wcześniej wspomniana możliwość operacji na plikach i katalogach.

Jako, że mamy tu do czynienia z Node.js, jako programiści możemy do naszego programu dodawać także dodatkowe moduły, które umożliwią nam m.in. pracę z wiadomościami e-mail, czy współpracę z bazą danych MongoDB. Dzięki temu możemy dowolnie rozbudowywać swój program o dodatkowe funkcje, których nie ma w podstawowej wersji NodeWebkit.

NodeWebkit ma sporo zalet…

Zdecydowanie trzeba zwrócić uwagę na kilka rzeczy. Przede wszystkim mimo iż musimy pisać CSS dla naszego programu, to nie musimy się martwić o wsparcie przeglądarek – możemy używać tu wszystkich zaimplementowanych w Webkit atrybutów. Nawet prefiksy stają się niestraszne, gdyż jeśli już przyjdzie nam z nich korzystać, to będzie to tylko -webkit- :)

Co więcej: NodeWebkit jest wieloplatformowy – posiada swoje wersje zarówno dla Windows jak i OS X, a także dla Linuxa! Tak więc o ile odpowiednio rozplanujemy projekt, jesteśmy w stanie napisać jeden program działający na trzech platformach, wymieniając jedynie wersję platformy, na której dana wersja jest oparta. Jak dla mnie genialne.

…ale i kilka Wad

Niestety są też pewne niedogodności związane z bezpieczeństwem programu. Wszystkie pliki – skrypty, kody HTML czy CSS są możliwe do odczytania przez użytkownika gdyż nie jest on kompilowany (można się tu ewentualnie uciec do jakiegoś zaciemnienia kodu JavaScript). Co za tym idzie upatrywałbym tutaj raczej możliwość tworzenia projekt Open-Source. Problemem jest także korzystanie z różnorakich API – jawne przechowywanie klucza dla naszej aplikacji nie jest bezpieczne, więc należy się tu uciekać do wsparcia serwerem PHP, któy sprawi, że takie dane będą transparentne dla użytkownika.

Oczywiście trzeba mieć na uwadze, że takie aplikacje nigdy nie będą lepsze aniżeli natywne programy dla Windows. Jednakże przygotowanie takiego wydaje mi się całkiem kuszące, co też ostatnio zrobiłem (aplikacja do tworzenia szybkich notatek przechowywanych w dokumentach JSON). Co Wy na to by w najbliższym czasie zainteresować się bliżej tą technologią? Bylibyście chętni na kilka wpisów dotyczących tworzenia programów opartych na NodeWebkit?

Autor: Konrad Przydział