Menu
  • Hem
  • Dokument
  • Om Mig
Geosupportsystem

Komprimera kod

Posted on 2015-05-06

När jag använde en javascriptkomprimerare för att minska ner mängden kod i min applikation för att mäta i panoramabilder så var det flera saker som hände.

Alla onödiga tabbar och mellanslag, samt alla kommentarer försvann. Dessa behövs inte och även om de inte exekveras i webbläsaren så tar de bandbredd att överföra.

Långa variabler byttes i en del fall ut mot betydligt kortare, av samma skäl som tidigare.

En hel del åtgärdades inte, vilket främst har att göra med att jag skrivit kod efter hand och inte själv gjort vad jag kunnat för att exempelvis reducera antalet funktioner.

Det som var mer intressant för mig var att en del saker, som är fullständigt korrekta och framför allt begripliga, ändrades till något som fortfarande är korrekt, men betydligt svårare att begripa när man inte är van.

Ett exempel:

var testdata = true; // sätt värde till sann
var testvariabel; // definiera variabel
if (testdata == true) { // prova om värdet är sann
   testvariabel = "sant"; // om sann lägg in "sant" i variabel
} else { // om vilkoret inte är sant
   testvariabel = "falskt"; // lägg in värdet "falskt" i variabeln
} // avsluta vilkoret
alert(testvariabel); // skriv ut värdet i variabeln

Och efter komprimeringen:

var testdata=!0,testvariabel;
testvariabel=1==testdata?"sant":"falskt",alert(testvariabel);

Från att ha varit 376 bytes så blev det 90, men vad står det egentligen?

Även utan kommentarerna i den första koden så är det inte så svårt att läsa sig till vad det är som händer. I den andra så börjar det bli lite överkurs för mig.

Jag antar att ”!0” är ett annat sätt att skriva sant, eller ”icke falskt” och då förstår jag den första delen (fram till semikolonet).

Nästa del får jag nog dela lite på för att förstå…

”testvariabel=” betyder att testvariabeln skall tilldelas ett värde, som är beroende av om testdata är lika med 1, eller ”sant”(”1==testdata”).

Om så är fallet (”?”) så tilldelas värdet ”sant”, om inte (”:”) ”falskt”. Det kommatecken som kommer före utskriften av resultatet hänger jag inte med på riktigt. Eftersom det inte är ett semikolon så hänger det ihop med det tidigare på något sätt, men det enda sätt jag kan få till kopplingen är att utskriften skall göras efter det att villkoret är kört?

Hur som helst, det finns funktioner för att komprimera kod och är det mycket kod så kan effekterna bli märkbara. Däremot så blir det inte mer läsbart, så se till att du skriver din kod betydligt mer överskådligt med massor av kommentarer. När du är nöjd så kan du använda exempelvis http://refresh-sf.com/ för att komprimera.

a!=b?"olika":"lika";

Är ni med? Om a är olik b så är de ”olika”, annars är de ”lika”.

villkor ? sant : falskt ;

På komprimeringssidan som jag länkat till ovan så går det att komprimera även CSS och HTML på samma sätt. En annan site som också baseras på UglifyJS är http://jscompress.com/.

1 thought on “Komprimera kod”

  1. Anders Jackson skriver:
    2015-05-06 kl. 16:16

    Det är en skillnad på if-sats och ?: i JavaScript (och alla programmeringsspråk baserade på C-syntax).

    En if-sats är en sats som inte har ett värde.
    Medans ?: är ett triär uttryck, dvs en operation som tar tre argument. + är binärt uttryck som tar två argument och – kan vara både binärt och unärt (bara ett argument). Dvs de räknar ut ett värde.

    Så ?: kan du ha i uttryck, som i en formel, en tilldelning eller utskrift. Vilket man inte kan med if-sats, eftersom en sats inte har något värde.

    if (b != 20) then
    a = 10;
    else
    a = 20;

    ger samma resultat som

    a = b != 20 ? 10 : 20;

    Man kan inte skriva följande i JavaScript.

    a = if (b != 20) then 10; else 20;

    I C-syntax-språk så kan man använda komma som delare mellan satser. Men då betraktas de som en sats, inte flera.

    Ex följande ger samma resultat.

    for (a=0; a < 10; print a, a++)
    ;

    eller

    for (a = 0; a < 10; a++)
    print a;

    Det andra är mer lättläst och -tolkat, medans den första är mer komprimerad men svårtolkad. Mer komprimerad, eftersom man inte behöver ha { och } runt satserna och ;-tecken efter satserna.

    Men som du skriver, man bör alltid använda det lättolkade sättet att skriva när man själv kodar.

    Svara

Lämna ett svar Avbryt svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *

Translate with Google

GBR In English
GER Auf Deutch
FRA En Français
ESP En Español
Swedish is a hard language for a machine to translate. Nuance and detail will likely be lost.
     

Bok om QGIS på Svenska

Bok

Beställ Boken/E-bok genom att klicka på bilden (även förhandsgranskning).

Senaste kommentarer

  • Gabriel om Punktmoln i QGIS 3.18
  • klakar om Punktmoln i QGIS 3.18
  • Gabriel om Punktmoln i QGIS 3.18
  • Hector Garrido om QGIS LTR vs LTR
  • Christian om Stildelning för QGIS

Arkiv

Prenumerera på Geosupportsystem

Skriv in namn och epost för att prenumerera på meddelanden från denna blogg.
Loading

geosupport

YouTube video to frames. Processed in OpenDroneMap YouTube video to frames. Processed in OpenDroneMap and visualized in QGIS 3.17.
Japp! Dubbelbeställde TVÅ gånger. En annan mode Japp! Dubbelbeställde TVÅ gånger. En annan modell levererades idag.
Ooops. Tryckte nog för många gånger på bestäl Ooops. Tryckte nog för många gånger på beställ-knappen...
Ladda mer...

Meta

  • Logga in
  • Flöde för inlägg
  • Flöde för kommentarer
  • WordPress.org
©2021 Geosupportsystem | WordPress Theme by Superbthemes.com