Jeg er ved at lave et JavaScript til et site som snart er begyndt at fylde en del kb, pga. de mange kommentarer og lange navne på variabler og funktioner.
Findes der et program (evt. i php) som kan tage et JavaScript og fjerne alle kommentarer, unødvendige mellemrum, tabulatorskifte, linieskifte o.l. samt omdøbe samtlige funktioner og variabler til noget super kort?
Dette ville samtidig gøre det ret svært at forstå koden, hvilket egentlig er ok for mig da det så bliver det svære for en evt. konkurrent at stjæle.
Er der nogen der kender sådan et program eller har en idé til hvordan det kan laves?
Hos Computerworld it-jobbank er vi stolte af at fortsætte det gode partnerskab med folkene bag IT-DAY – efter vores mening Danmarks bedste karrieremesse for unge og erfarne it-kandidater.
Har du ikke mulighed for at lægge dit javascript ud i en ekstern js-fil som du så refererer fra siden?
En anden ting der kan gøres er at koble event-handlers på dokumentet efter det er loadet, således har du (næsten) kun essentiel HTML-kode i din side når den indlæses i browseren...
Det er af mange grunde ikke så nemt at lave til JavaScript, hvis det altså skal fungere godt.
Det bedste er at gøre det i hånden - og der kan du få stor hjælp af noget 'Search & Replace' i din kodeeditor. Med mindre, der er tale om mange tusinde kodelinjer, behøver det ikke tage så lang tid =)
Olebole: Hvorfor tror du ikke det vil fungere godt at gøre sådan med et JavaScript? Men jo, det kan godt være at løsningen bare bliver noget search & replace. Det er bare så surt når man skal ændre i javascriptet, så bliver det næsten nødvendigt at gøre det hele forfra igen.
Jokkejensen: Hvad fjerner dit script der? Mellemrum og tabulator? Men jo, det må være løsningen selv at programmere det med noget regex hvis det ikke er til at drive op andre steder.
Hvis jeg efterfølgende offentliggører php-scriptet så kan det jo være det er noget der er andre her på eksperten der har lyst til at hjælpe med.
Hvis du allerede lægger dit javascript i en ekstern js-fil, så bliver den vel cached på klienten (i de fleste tilfælde), så er det vel ikke nødvendigt at optimere vildt meget på det (med mindre du genererer scriptet dynamisk og det derfor ikke kan caches effektivt på klienten)...?
mapoulsen: det fjerner space, tab og kommentarer - har ikke selv lavet det, men kan godt undersøge nærmere - men lav da dit eget, der opfylder dine krav.
Softspot: Det fylder 50 kb og jeg vil skyde på at det ville kunne komme ned på 15 kb hvis alt overflødigt blev fjernet. Dette ville samtidig gøre det næsten komplet ulæseligt for eventuelle konkurrenter at bruge koden på deres site.
Jokkejensen: Du må gerne undersøge hvor du har scriptet fra. Men jo, vil da gerne lave mit eget. Har bare ret begrænset tid, og det ville da være rart hvis det var lavet i forvejen. Og det må da næsten være her man skal spørge om sådan noget ;)
Umiddelbart er givinsten ved at gøre koden ulæselig pga. den slags condesering nærmest noneksistent - der findes nok ligeså mange beautifiers som der findes condensers, så den kode er nok hurtigt stillet pænt op igen...
Nå, men det var jo heller ikke det der var den primære opgave... :)
Softspot: Det kan jeg godt følge dig i. Men min kode indeholder i forvejen nogle lidt specielle matematiske udregninger, og hvis man tage og laver alle variabel navne om til a1, a2, a3 osv. så tror jeg godt det kan blive næsten helt uforståeligt.
Jeg kan give et lille eksempel, et tilfældigt uddrag fra min kode:
// Størrelser til skærm (i PX) //----------------------------------------
// Finder ud af hvilken side der er begrænsende i forhold til den plads der er på skærmen if((widthTotalCm/heightTotalCm) >= (widthTotalMaxPx/heightTotalMaxPx)) { screenLimitSide = 'width'; screenNolimitSide = 'height'; } else { screenLimitSide = 'height'; screenNolimitSide = 'width'; } limitPx = eval(screenLimitSide + "TotalMaxPx");
// Udregner rammens bredde i pixels på baggrund af den begrænsende side // da dennes totale størrelse er kendt i pixels (limitPx). // Udregningen laves ved at udregne den procentdel som rammen udgør af den totale side i CM, // hvorefter denne procentdel multipliceres med limitPx for at rammens bredde i pixels.
Så mangler jeg bare lige at omdøbe funktioner til noget kort og uforståeligt. Men det kan jo evt. gøres ved bare at have et array med navnene på alle de funktioner og variabler man gerne vil have omdøbt og så bare loope denne igennem og lave en str_replace() (i PHP). Og så er det vel egentlig ikke så meget mere tilbage i det projekt. Det vil jeg begynde at lege lidt med i morgen :)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.