WORDS
Navigera i webbdjungeln: Webbläsarmotorer och runtimemiljöer
I den här artikeln ska vi gå igenom definitioner för några av komponenterna i en webbläsare, så det blir mer tekniskt än resten av serien. Om du vill kan du hoppa till den översiktliga tabellen.
Definitioner
Det finns åtminstone tre "motor"-koncept i en webbläsare: webbläsarmotorn, renderingsmotorn och Javascript-motorn, där dom senare två ingår som del i den förra.
Webbläsarmotor: det system som transformerar en webbsida till en interaktiv, visuell representation på en användares enhet1
Renderingsmotor: det system som ritar upp en webbsida på skärmen; används ofta som synonym till "webbläsarmotor"
Javascript-motor: ett program som exekverar Javascript-kod
Webbläsarmotorn är runtimemiljön i en webbläsare, men runtimemiljöer finns för alla programmeringsspråk.
Runtimemiljö: det system som exekverar allt det som "följer med" en implementation av ett programmeringsspråk, och innefattar implementationer av allt från standardbiblioteket till skräpsamling (eng. garbage collection) och hur funktionsanrop omvandlas till maskinkod
Översikt
För att göra det hela aningen mer konkret, så tar vi några exempel. Dom populäraste motorerna och runtimemiljöerna för Javascript är:
Webbläsare | Runtimemiljö / webbläsarmotor |
Javascript-motor |
---|---|---|
Firefox | Gecko | SpiderMonkey |
Chrome | Blink | V8 |
- | Node.js | V8 |
Safari | WebKit | JavaScriptCore |
Edge | EdgeHTML → Blink2 | Chakra → V82 |
Internet Explorer | Trident | Chakra3 |
Allt detta gäller för desktopversionerna av webbläsarna. På iOS används WebKit/JavaScriptCore i alla webbläsare (pga. Apples regler). På Android används Blink/V8 av Chrome och Edge.
Vad ingår i standardbiblioteket?
Varje runtimemiljö har sin egen implementation av standardbiblioteket, så vad som finns i standardbiblioteket kan variera, men alla webbläsares implementationer "ska" vara likvärdiga.
- Javascript-standarden (organ: ECMA) definierar ett antal funktioner och objekt.
- Exempel:
Array
,.replace()
,.length
- Finns i webbläsare och Node.js
- Exempel:
- Diverse webbstandarder (organ: Whatwg) definierar bl.a. hur man kan arbeta med HTML-element, kallat DOM. Detta ingår i alla webbläsares runtimemiljöer.
- Exempel:
document.getElementById()
,alert()
,location.href
- Finns i webbläsare
- Exempel:
- Node.js har själva bestämt hur man ska kunna arbeta med Javascript på servern, vilka funktioner och objekt som ska finnas tillgängliga.
- Exempel:
require()
,path.join()
- Finns i Node.js
- Exempel:
- Definition från engelskspråkiga Wikipedia. ↩
- Microsoft Edge håller på att gå över från EdgeHTML/Chakra till Blink/V8, men har i februari 2019 inte publicerat någon. ↩
- Före Internet Explorer 9 hade motorn inget riktigt namn. ↩