Úvod do JavaScriptu

Podívejme se, co je na JavaScriptu tak zvláštního, čeho s ním můžeme dosáhnout a jaké další technologie si s ním dobře hrají.

Co je JavaScript?

JavaScript byl původně vytvořen, aby „učinil webové stránky živými“.

Programy v tomto jazyce se nazývají skripty . Mohou být zapsány přímo v HTML webové stránky a spouštěny automaticky při načítání stránky.

Skripty jsou poskytovány a spouštěny jako prostý text. Ke spuštění nepotřebují speciální přípravu ani kompilaci.

V tomto aspektu se JavaScript velmi liší od jiného jazyka zvaného Java.

Proč se tomu říká Java Skript?

Když byl JavaScript vytvořen, měl zpočátku jiný název:„LiveScript“. Ale Java byla v té době velmi populární, takže bylo rozhodnuto, že umístění nového jazyka jako „mladšího bratra“ Javy by pomohlo.

Jak se však JavaScript vyvíjel, stal se plně nezávislým jazykem s vlastní specifikací zvanou ECMAScript a nyní nemá s Javou vůbec žádný vztah.

JavaScript se dnes může spouštět nejen v prohlížeči, ale také na serveru nebo vlastně na jakémkoli zařízení, které má speciální program zvaný JavaScript engine.

Prohlížeč má vestavěný engine, někdy nazývaný „JavaScriptový virtuální stroj“.

Různé motory mají různá „kódová jména“. Například:

  • V8 – v prohlížečích Chrome, Opera a Edge.
  • SpiderMonkey – ve Firefoxu.
  • …Existují další kódové názvy jako „Chakra“ pro IE, „JavaScriptCore“, „Nitro“ a „SquirrelFish“ pro Safari atd.

Výše uvedené výrazy je dobré si zapamatovat, protože se používají v článcích pro vývojáře na internetu. Využijeme je také. Pokud například „funkci X podporuje V8“, pak pravděpodobně funguje v prohlížečích Chrome, Opera a Edge.

Jak fungují motory?

Motory jsou složité. Ale základy jsou snadné.

  1. Motor (vložený, pokud se jedná o prohlížeč) čte (“analyzuje”) skript.
  2. Pak převede („zkompiluje“) skript na strojový kód.
  3. A pak se strojový kód spustí, docela rychle.

Motor aplikuje optimalizace v každém kroku procesu. Dokonce sleduje zkompilovaný skript, jak běží, analyzuje data, která jím protékají, a na základě těchto znalostí dále optimalizuje strojový kód.

Co dokáže JavaScript v prohlížeči?

Moderní JavaScript je „bezpečný“ programovací jazyk. Neposkytuje nízkoúrovňový přístup k paměti nebo CPU, protože byl původně vytvořen pro prohlížeče, které to nevyžadují.

Možnosti JavaScriptu do značné míry závisí na prostředí, ve kterém běží. Node.js například podporuje funkce, které umožňují JavaScriptu číst/zapisovat libovolné soubory, provádět síťové požadavky atd.

JavaScript v prohlížeči může dělat vše, co souvisí s manipulací s webovými stránkami, interakcí s uživatelem a webovým serverem.

JavaScript v prohlížeči je například schopen:

  • Přidejte na stránku nový HTML, změňte stávající obsah, upravte styly.
  • Reagovat na akce uživatele, spouštět klikání myší, pohyby ukazatele, stisk kláves.
  • Posílejte požadavky přes síť na vzdálené servery, stahujte a nahrávajte soubory (takzvané technologie AJAX a COMET).
  • Získejte a nastavte soubory cookie, ptejte se návštěvníka, zobrazujte zprávy.
  • Zapamatujte si data na straně klienta („místní úložiště“).

Co NEMŮŽE JavaScript v prohlížeči dělat?

Možnosti JavaScriptu v prohlížeči jsou omezeny z důvodu ochrany bezpečnosti uživatele. Cílem je zabránit zlé webové stránce v přístupu k soukromým informacím nebo poškození dat uživatele.

Příklady takových omezení zahrnují:

  • JavaScript na webové stránce nemusí číst/zapisovat libovolné soubory na pevném disku, kopírovat je nebo spouštět programy. Nemá přímý přístup k funkcím OS.

    Moderní prohlížeče umožňují práci se soubory, ale přístup je omezený a je poskytován pouze v případě, že uživatel provede určité akce, jako je „upuštění“ souboru do okna prohlížeče nebo jeho výběr pomocí <input> tag.

    Existují způsoby interakce s fotoaparátem/mikrofonem a dalšími zařízeními, ale vyžadují výslovné povolení uživatele. Stránka s povoleným JavaScriptem tedy nemusí tajně aktivovat webovou kameru, pozorovat okolí a odesílat informace NSA.

  • Různé karty/okna o sobě obecně nevědí. Někdy ano, například když jedno okno používá JavaScript k otevření druhého. Ale i v tomto případě JavaScript z jedné stránky nemusí přistupovat na druhou stránku, pokud pocházejí z různých webů (z jiné domény, protokolu nebo portu).

    Toto se nazývá „Zásady stejného původu“. Chcete-li to obejít, obě stránky musí souhlasit s výměnou dat a musí obsahovat speciální kód JavaScript, který ji zpracovává. Probereme to v tutoriálu.

    Toto omezení je opět pro bezpečnost uživatele. Stránka z http://anysite.com který uživatel otevřel, nesmí mít přístup k jiné kartě prohlížeče s adresou URL http://gmail.com a ukrást odtud informace.

  • JavaScript může snadno komunikovat přes síť se serverem, ze kterého pochází aktuální stránka. Jeho schopnost přijímat data z jiných webů/domén je však ochromena. I když je to možné, vyžaduje to explicitní souhlas (vyjádřený v HTTP hlavičkách) ze vzdálené strany. Opět se jedná o bezpečnostní omezení.

Taková omezení neexistují, pokud se JavaScript používá mimo prohlížeč, například na serveru. Moderní prohlížeče také umožňují pluginy/rozšíření, které mohou vyžadovat rozšířená oprávnění.

V čem je JavaScript jedinečný?

Jsou nejméně tři skvělé věci o JavaScriptu:

  • Plná integrace s HTML/CSS.
  • Jednoduché věci se dělají jednoduše.
  • Podporováno všemi hlavními prohlížeči a ve výchozím nastavení povoleno.

JavaScript je jediná technologie prohlížeče, která kombinuje tyto tři věci.

To je to, co dělá JavaScript jedinečný. Proto je nejrozšířenějším nástrojem pro vytváření rozhraní prohlížeče.

To znamená, že JavaScript lze použít k vytváření serverů, mobilních aplikací atd.

Jazyky „přes“ JavaScript

Syntaxe JavaScriptu nevyhovuje všem potřebám. Různí lidé chtějí různé funkce.

To se dalo očekávat, protože projekty a požadavky jsou pro každého jiné.

Nedávno se tedy objevilo množství nových jazyků, které jsou transpilovány (převedeno) na JavaScript před jejich spuštěním v prohlížeči.

Díky moderním nástrojům je transpilace velmi rychlá a transparentní, což ve skutečnosti umožňuje vývojářům kódovat v jiném jazyce a automaticky jej převádět „pod pokličkou“.

Příklady takových jazyků:

  • CoffeeScript je „syntaktický cukr“ pro JavaScript. Zavádí kratší syntaxi, což nám umožňuje psát jasnější a přesnější kód. Obvykle se to vývojářům Ruby líbí.
  • TypeScript se soustředí na přidání „přísného typování dat“, aby se zjednodušil vývoj a podpora složitých systémů. Je vyvinut společností Microsoft.
  • Flow také přidává zadávání dat, ale jiným způsobem. Vyvinuto společností Facebook.
  • Dart je samostatný jazyk, který má svůj vlastní engine, který běží v jiných prostředích než prohlížeč (jako jsou mobilní aplikace), ale lze jej také převést do JavaScriptu. Vyvinuto společností Google.
  • Brython je transpiler jazyka Python do JavaScriptu, který umožňuje psaní aplikací v čistém jazyce Python bez JavaScriptu.
  • Kotlin je moderní, stručný a bezpečný programovací jazyk, který může cílit na prohlížeč nebo uzel.

Je jich víc. Samozřejmě, i když používáme jeden z těchto transpilovaných jazyků, měli bychom znát také JavaScript, abychom skutečně rozuměli tomu, co děláme.

Shrnutí

  • JavaScript byl původně vytvořen jako jazyk pouze pro prohlížeč, ale nyní se používá i v mnoha dalších prostředích.
  • Dnes má JavaScript jedinečné postavení jako nejrozšířenější jazyk prohlížeče, plně integrovaný s HTML/CSS.
  • Existuje mnoho jazyků, které jsou „přeloženy“ do JavaScriptu a poskytují určité funkce. Po zvládnutí JavaScriptu je doporučeno se na ně alespoň krátce podívat.

No