închidere compilator - păstrați funcții neutilizate și nu redenumiți nedefinit

So closure compiler is great but exporting functions and defining externs seems to be too much manual work. Is there a way to tell the compiler that it should not remove any functions and should not rename any undefined functions?

Am 2 motive majore în spatele acestei situații:

  1. Dacă o funcție sau o proprietate nu este definită în scopul documentului javascript, probabil că este definită într-un fișier extern. Prin urmare, nu aș vrea ca acestea să fie redenumite.

  2. Dacă funcția este definită într-un anumit domeniu de aplicare, dar nu este apelată în același domeniu, probabil că este chemată într-un anumit cod extern. Prin urmare, aș dori să păstrez această funcție în fișier fără să o redenumesc.

În acest fel, am putea să compilam fișiere JavaScript fără să ne îngrijorăm de bibliotecile externe și de funcțiile de export care sunt chemați din paginile html.

0
Trebuie să citiți cuvintele "externe" și "exportul unei funcții".
adăugat autor Stephen Chung, sursa

2 răspunsuri

Pentru a evita acest lucru, execut compilatorul de închidere pe un script complet, care este concatenarea tuturor script-urilor aplicației mele. Deci, acesta este un proces în două etape:

1 - concatenarea tuturor

2 - rulați compilatorul de închidere

În plus, poate doriți (așa cum fac de multe ori, din cauza unor probleme cu jQuery înainte de v1.8) de a rula compilatorul cu compilationLevel = "simplu".

Concatenarea este foarte importantă deoarece, în general, încetinirea nu este legată de dimensiunea totală, ci mai ales de numărul de solicitări.

EDIT: Desigur, trebuie să automatizezi toate astea. Vă pot oferi o definiție a sarcinii furnicilor dacă folosiți furnică.

0
adăugat

Se pare că ar trebui să rulați compilatorul cu nivelul de optimizare SIMPLE_OPTIMIZATIONS. Nu vă lăsați păcălit de nume, deoarece încă vă compilează complet codul. Principala diferență este că SIMPLE_OPTIMIZATION nu va redenumi sau elimina codul mort în domeniul global. Aceasta înseamnă că cerințele externelor și ale exporturilor nu mai există.

0
adăugat
Acest lucru este adevărat, dar aș dori să folosesc funcția advanced_optimization pentru a redenumi funcțiile definite. Desigur, acest lucru se poate face manual, dar ar fi fost minunat dacă compilatorul de închidere a permis acest lucru.
adăugat autor xtrahelp.com, sursa
Dacă îți împleți codul într-o funcție anonimă imediat executată, acesta nu va mai fi în domeniul global. Compilatorul va putea redenumi funcțiile locale utilizând SIMPLE_OPTIMIZATIONS. Cu toate acestea, deoarece codul dvs. este înfășurat, va trebui acum să exportați simbolurile care trebuie expuse la domeniul global.
adăugat autor Chad Killingsworth, sursa
JavaScript, România - Moldova
JavaScript, România - Moldova
328 participanți

Comunitatea Română JavaScript: github.com/js-ro Pentru confort, opriți notificările. Parteneri: @node_ro, @php_ro, @python_ro, @seo_ro, @RomaniaGroup, @ai_ro, @Grupuri_IT Offtop: @holywars_ro Joburi: @js_jobs_ro Sponsored with ❤️ by ciupacabra.com