2014-12-24 6 views
7

Sto tentando di utilizzare cfstatic. Nel mio index.cfm, sto aggiungendo solo green.css usando cfstatic, cfstatic dovrebbe aggiungere solo la versione minimizzata di green.css, quindi il mio testo h1 <h1>I should be Green</h1> dovrebbe essere in colore verde. Ma cfstatic sta aggiungendo sia green.css & red.css. Mi manca la configurazione?ColdFusion cfstatic include tutti i file CSS

Application.cfc

component output="false"{ 

    This.name = "testing"; 
    This.sessionManagement = true; 
    This.sessionTimeout = CreateTimeSpan(1, 23, 59, 59); 
    This.mappings["/org"] = expandpath('.')&'\org'; 

function onRequestStart(){ 


    application.cfstatic = CreateObject('org.cfstatic.CfStatic') 
     .init( staticDirectory = ExpandPath('./assets'), 
       staticUrl  = "/cfstatic/assets/" 
      ); 
    } 
} 

index.cfm

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Test</title> 
    <cfscript> 
     application.cfstatic.include('/css/green.css',true); 
    </cfscript> 

<cfoutput>#application.cfstatic.renderIncludes('css')#</cfoutput> 

</head> 
<body> 
    <h1>I should be Green</h1> 
</body> 
</html> 

Green.css

/* This is assets/css/green.css */ 
h1 {color:green;} 

Red.css

/* This is assets/css/red.css */ 
h1 {color:red;} 

La mia uscita Browser è,

My browser output is

risposta

3

Non sono completamente familiare con CFStatic ma ho replicato il tuo esempio e ho trovato questo article on how package minification works. Leggendola, e i commenti, penso che tu possa andare su questo 2 modi diversi; sebbene non potrei dire che sono i migliori (o solo) percorsi.

A) Dividere gli stili nei propri pacchetti (cartelle). Che compila i file di ogni cartella in un file minificato basato su quella cartella.

Così si potrebbe fare una struttura di directory in questo modo ...

assets 
-- css 
--- green 
---- green.css 
--- red 
---- red.css 

Una volta compilato, il file minified sarebbe green.min.css e red.min.css.

quindi modificare il includere nel Application.cfc che chiama green.css in questo modo - application.cfstatic.include('/css/green/green.css',true);

B) Situato minifyMode="file" nel costruttore che creerà i file minified separati in un'unica posizione.

Il tuo index.cfm corrente funzionerebbe come previsto in questo caso.

A seconda della complessità di un'app con cui lavori, penso che la confezione divisa sia la soluzione giusta, a meno che non si tratti di pochi file.

Cheers.

+0

Io sono l'autore e questa risposta è la risposta assolutamente corretta, quindi complimenti a Tony per aver letto i documenti e avere un esempio funzionante. I documenti potrebbero certamente essere migliori, ma leggere qui come funziona la minificazione è fondamentale: http://domwatson.codes/cfstatic/ –

1

Non ho mai usato CFStatic, ma può essere in renderIncludes(). Hai provato a rimuovere quella linea? Che succede? Se non è direttamente renderIncludes(), la chiave potrebbe essere la configurazione di includeAllByDefault.

Da their docs:

inclusi tutti i file di default (da 0.2.2)

Fuori dalla scatola, CfStatic includerà tutti i file statici se non si utilizza la .include() metodo per selezionare in modo specifico i file da includere (ovvero basta fare .renderIncludes()). È possibile modificare questo comportamento impostando includeAllByDefault su false.

Il fraseggio di quello sembra che potrebbe essere un po 'meglio. Non è chiaro a me se questa funzione è necessaria per il rendering di tutti i file inclusi, o questo è solo un tipo di funzione getAll(*Type*).

+0

Inizialmente durante la lettura del documento, mi sentivo lo stesso e ho provato anche quello. Ma questa configurazione è utile ** se non usi mai il metodo .include() ** –

+0

@CFMitrah Sì. Non avendo esperienza con CFStatic, queste due idee sono le migliori che ho. Ho visto che, nel testo copiato, non usavo '.include()' ma pensavo che la formulazione del paragrafo fosse piuttosto breve. Suppongo che quando tiri fuori quella linea, il tuo css non è incluso nella pagina? –