160 likes | 271 Views
Knihovna pro zjednodušení tvorby webových aplikací v JavaScriptu. Diplomová práce. Autor: Filip Minx Vedoucí: Ing . Petr Jedlička, Ph.D. c íl práce.
E N D
Knihovna pro zjednodušení tvorby webových aplikací v JavaScriptu Diplomová práce Autor: Filip Minx Vedoucí: Ing. Petr Jedlička, Ph.D.
cíl práce • Cílem práce je vytvoření knihovny jazyka JavaScript, která usnadní použití tohoto jazyka při tvorbě webových aplikací s cílem dosažení co nejlepší rozšiřitelnosti, stability, kompatibility a výpočetní náročnosti softwaru.
Cíl práce • Navržení knihovny jazyka JavaScript, která umožní zjednodušit vytváření kvalitních webových aplikací. • Odstínění od rozdílů v implementaci JavaScriptu • Správa asynchronních volání funkcí • Abstrakce práce s DOM • Ověřování formulářových dat • HTML5 rozšíření • Další často používané nástroje
Cíl práce • Knihovna by měla rovněž představovat určitou platformu, na které se dají stavět složitější systémy.
Metodika • Používání „bestpractices“ a návrhových vzorů pro psaní kvalitního kódu v JavaScriptu. • Optimalizace časové náročnosti algoritmů. • Vytvoření intuitivního a lehce použitelného API.
Výsledky • Knihovna OrchidJS • Vlastnosti: • Rozhraní s konzistentním chováním mezi prohlížeči • Funkcionální selektorový systém pro práci s DOM • Abstrakce manipulace se strukturou DOM • Nástroj pro bezpečné rozšíření prostředí (řeší kolize) • Systém pro správu asynchronně volaných funkcí. • Podpora objektového programování v JS. • Nástroj pro rozšíření funkcionality vlastních objektů. • Dynamická změna obsahu stránky
Abstrakce Práce s DOM • Koncepce kontextů. • Speciální kolekce objektů. • Kontextové modifikátory Nahrazení textových CSS selektorů řetězitelnými funkcemi. • Kontextové manipulátory Rychlá aplikace funkcí na objekty v kontextu
Správa asyncrhonních funkcí • Pomocí objektů, které umožňují správu asynchronních funkcí. • Objekty Thread, ThreadQueue, ThreadMeetup • Řeší peklo callback funkcí.
Podpora OOP • JavaScript je objektový jazyk založený na prototypech. Nepodporuje klasický koncept tříd. • Většinou se v OOP v JavaScriptu dělají podstatné chyby. • Řešení pomocí funkcí, které simulují definování tříd a jejich dědičnost. • Funkce Class a Inherit.
Rozšíření funkcionality objektů • Knihovna poskytuje nástroj, který k vývojářem vytvořeným objektům dokáže přidat rozhraní poskytující přídavnou funkcionalitu. • Možnost přidat rozhraní pro: • systém naslouchání událostí. • rozhraní spustitelného charakteru • Tento nástroj rozšiřuje možnosti JavaScriptu jako takového a podporuje vývoj komplexních systémů.
Šablony • Umožňují oddělit prezentační a logickou stránku aplikací. • Mají schopnost měnit obsah stránky dynamicky se změnou dat. • Objekty Template a TemplateData. • Template naslouchá události „change“ instance TemplateData. • Možnost volby automatického udržování obsahu up-to-date. • Možnost zápisu struktury šablony přímo do HTML.
MOdularita • Knihovna je vysoce modulární. • Je možné vypustit nepotřebnou funkcionalitu pro zmenšení velikosti knihovny. • Moduly: • Validator – nástroj pro automatizovanou validaci formulářových vstupů. • DataSystem – systém pro strukturované ukládání dat. Využívá HTML5 objektu localStorage.
Rozšiřitelnost • Prostředí knihovny je lehce a bezpečně rozšiřitelné. • Funkce extendFrameumožňuje: • načítání modulů i při chodu aplikace. • Určuje co dělat při kolizích. • Zamezuje vícenásobnému načítání stejných modulů. • Díky této funkci je možné tuto knihovnu použít jako základní platformu, na které bude vývojář stavět vlastní systém za použití funkcí této knihovny.
Přínos pro praxi • Knihovna je navržena tak, aby řešila typické problémy vývoje webových aplikací. • Knihovna je naprosto soběstačná a poskytuje asi 150 různých funkcí a objektů, které značně usnadňují a zrychlují vývoj. • API knihovny je velice jednoduché a intuitivní, a tudíž jej mohou využívat i méně zkušení programátoři. • Knihovna rovněž poskytuje nástroje, které podporují tvorbu komplexních systémů v tomto jazyce. • Detailní dokumentace API s ukázkou použití veškerých funkcí.