Přejít k navigační liště

Zdroják » JavaScript » Javascriptaření: překladače, pakovače

Javascriptaření: překladače, pakovače

Články JavaScript, Různé

V dnešním Javascriptaření si představíme několik nástrojů pro překlad z a do JS (nejen CoffeeScript…) – a nepůjde o žádné exotické jazyky, ale o „vytuněný“ JS, MVC framework, knihovny pro kompresi dat nebo velmi zajímavou vývojářskou konzolu, která umožní ladit skripty najednou v několika prohlížečích.

CoffeeScriptu asi nemá smysl se rozepisovat nějak víc – většina čtenářů Zdrojáku ho pravděpodobně zná a setkala se s ním. Připomínat, že jde o jazyk, překládaný do JavaScriptu, je tedy nošením sov do Athén. CoffeeScript si tiše našel cestu na pracovní stanice českých vývojářů, ale nejen tam. (Mimochodem, víte o tom, že pro CouchDB existuje patch, který umožňuje psát dotazy přímo v CoffeeScriptu?)

CoffeeScript přeložený do JavaScriptu je „obnošená vesta“. Ale co třeba JavaScript přeložený do Coffeescriptu? Překladač se, nepřekvapivě, jmenuje JS2Coffee a usnadní případnou migraci z JS do Coffee. Samozřejmě nemůžete očekávat, že rozpozná veškeré objektové patterny a správně je převede, ale pro počáteční migraci a získání „surového výchozího materiálu“ je určitě použitelný.

Pokud se vám zdá změna syntaxe mezi JS a CoffeeScriptem příliš radikální, zkuste třeba Kaffeine. Kaffeine umožňuje psát dál ve „vanilla JS“, pouze přidává některé syntaktické prvky, jako jsou implicitní definice funkcí a proměnných, snazší vyjádření asynchronních funkcionálních konstrukcí nebo „for each“ konstrukci ( for ... of ...)

O vhodnosti některých zjednodušení je možné se přít. Má smysl zavádět implicitní deklarace, nebo by byla na místě přísnější syntaxe, s nutností explicitních deklarací na jednom místě apod.? To další překladač má v tomto ohledu jasno: Google Traceur umožňuje, slovy z jeho vlastních stránek, používat chystané novinky v JS už dnes. Mezi nabízené vlastnosti patří třídy, moduly, traits, generátory nebo destrukturovaná přiřazení – tedy vlastnosti, navrhované např. v JS.next nebo v novém Harmony.

(Mimochodem, autor CoffeeScriptu má na webu seznam jazyků, kompilovaných do JS – díky blizz za připomenutí v komentářích!)

Dosti transpilerů. Pojďme se podívat třeba na nějaký MVC framework. Pro JavaScript je jich už poměrně dost – co třeba Spine? Je napsaný v CoffeeScriptu, ovšem lze ho použít i s čistým JS. Základ, tedy vlastní MVC kostra, připomíná Backbone. Spine navíc nabízí rozšíření pro mobilní zařízení, přístup k některým API (localstorage, AJAX atd.) nebo správce závislostí. Uživatele Rails potěší, že Spine je přizpůsobené pro integraci s tímto populárním frameworkem.

Autor článku v jedné webové aplikaci použil „filesystém v prohlížeči“ – tedy ukládání souborů v localstorage. Jednalo se převážně o textové soubory, a protože je localstorage omezený na 5MB (respektive: věří se, že tomu tak je, informace o tom, jak to je ve skutečnosti, se různí), použil transparentní kompresi: LZW.JS. Pro stažení souborů z localstorage v prohlížeči do „počítače“ se pak hodily knihovny JSzip, která dokáže soubory zabalit do archívu ZIP (buď metodou store, nebo deflate) a Downloadify, která překonává problém s pojmenováním takto vygenerovaných souborů. U té druhé knihovny pozor – na odkazovaných stránkách ji nenajdete, podívejte se na GitHub: Downloadify.

Při ladění skriptů může nastat situace, kdy si říkáte: Je skvělé, že mám Firebug, ale hodilo by se mi mít tuhle konzoli v několika prohlížečích NAJEDNOU! Přesně k tomu slouží další dnešní nástroj – Tutti. Používá WebSocket, Socket.IO a Node.js pro realtime komunikaci mezi prohlížeči. Funguje tak, že zadané výrazy nechá zpracovat eval()-em na všech spojených prohlížečích, a v konzoli vypíše výsledky. Nemusíte tak skákat z okna do okna a vidíte na jednom místě, jak jednotlivé prohlížeče naloží s daným výrazem.

Komentáře

Odebírat
Upozornit na
guest
5 Komentářů
Nejstarší
Nejnovější Most Voted
Inline Feedbacks
Zobrazit všechny komentáře
m

….

Balwan

Nemáte někdo praktické zkušenosti s Traceur compilerem?

Vypadá jako velmi zajímavá možnost, ale na internetu jsem našel v diskuzích několik nedobrých zmínek o jeho výkonu a není mi také jasné, jestli Google bude projekt nadále podporovat a nezačne raději investovat do Google Dart.

Stav SIMD v Rustu v roce 2025

Různé
Komentáře: 1
SIMD - neboli Single Instruction, Multiple Data - znamená, že procesor může jednou instrukcí zpracovat více datových prvků najednou. Typicky to znamená, že místo sčítání dvou čísel přičtete dvě sady čísel paralelně. To může přinést výrazné zrychlení například při zpracování obrazu, audia nebo numerických výpočtů. Pokud již SIMD znáte, tato tabulka je vše, co budete potřebovat. A pokud s SIMD teprve začínáte, tabulku pochopíte do konce tohoto článku

GPUI Component: moderní Rust GUI komponenty pro cross-platform desktop aplikace

Různé
Komentáře: 0
GPUI Component je open-source Rust knihovna rozšiřující framework GPUI o více než 60 moderních, nativních a multiplatformních UI komponent. Staví na deklarativním přístupu, stateless renderování a jednoduchém API inspirovaném Reactem či Yew. Díky optimalizovanému výkonu, podpoře témat a flexibilním layoutům umožňuje rychlý vývoj desktopových aplikací, jako je například trading nástroj Longbridge Pro. Knihovna je licencována pod Apache 2.0 a dostupná na GitHubu.