Preprocessing CSS (SASS o LESS) rispetto alla postelaborazione CSS

2

Quindi mi sono imbattuto in alcuni framework per l'elaborazione dei post CSS come pleeease.io e mi chiedevo quali sono i principali vantaggi o casi d'uso per usando la post-elaborazione CSS? Sento che puoi ottenere più o meno la stessa cosa con le funzioni / mixaggi di pre-elaborazione. Come vengono utilizzati in combinazione con linguaggi di pre-elaborazione come SASS o LESS?

    
posta aug 06.11.2014 - 21:53
fonte

2 risposte

1

La differenza tra postelaborazione e pre-elaborazione è inesistente, almeno nel caso dei linguaggi di programmazione. Entrambi descrivono una trasformazione da un formato A (che è stato creato da un essere umano) per formattare B (che è necessario avere, ma è scomodo da scrivere):

“compiler”:   A    -> B

== CSS-related examples ==
less:         LESS -> CSS
sass:         SASS -> CSS
sass:         SCSS -> CSS
autoprefixer: CSS  -> CSS
minifier:     CSS  -> CSS
pleeease:     CSS  -> CSS

== Other examples ==
c preprocessor: C        -> C without macros
gcc:            C        -> machine code
pandoc:         LaTeX    -> HTML
pandoc:         Markdown -> HTML
pandoc:         LaTeX    -> Markdown

Alcune osservazioni su questi esempi:

  • Il formato di input e output può essere lo stesso. Questo è il caso di tidier, minificatori e altri processori di codice che semplificano in qualche modo la fonte. Per esempio. il preprocessore C espande macro e costanti nel codice sorgente. Questo è equivalente a autoprefixer, che espande le direttive CSS non prefissate nelle loro varianti prefissate.

  • I processori possono coinvolgere più subprocessori che fanno ciascuno una parte della trasformazione.

    • pleeease può reindirizzare il codice attraverso vari processori come autoprefixer o minifer.
    • Un compilatore C include uno stage per il preprocessore.
    • Pandoc ha un processore che analizza l'input (ad esempio un documento Markdown) in una struttura dati comune, quindi passa questa rappresentazione intermedia a un altro processore che la trasforma nel formato di destinazione (ad esempio HTML). L'architettura di Pandoc è abbastanza collegabile e consente di aggiungere ulteriori fasi di pre-elaborazione. Ad esempio, questo è usato per implementare riferimenti bibliografici nel dialetto di Pandoc's Markdown, espandendo la sintassi in un modulo Markdown più standard.

Se pleeease si definisce un post-processore piuttosto che un pre-processore, questo è fatto ...

  • per differenziarsi dai pre-processori come LESS o SASS. Il punto di forza di LESS e SASS / SCSS è che estendono o sostituiscono la sintassi CSS. Pleeease vuole invece rendere più portabile il codice CSS esistente.
  • per indicare che il pleeease deve essere usato dopo lo sviluppo. Se usi SASS per scrivere i tuoi stili, devi eseguire il compilatore prima che servi il foglio di stile al tuo browser. E dopo hai scritto lo stile, puoi eseguire il rendering sul risultato per renderlo più appetibile ai browser più vecchi.

Riassumendo: non vi è alcun motivo tecnico per differenziare tra la preelaborazione e la postelaborazione nel regno dei linguaggi di programmazione. Il termine "postprocessing" non è ampiamente utilizzato in questo dominio e si dovrebbe quindi sostituire e preferire "pre-elaborazione", "compilazione" o "trasformazione".

    
risposta data 07.11.2014 - 16:43
fonte
2

Gli obiettivi di preelaborazione e postelaborazione sono molto diversi:

  • la pre-elaborazione si concentra sull'aiutare i programmatori a scrivere codice più semplice e più gestibile
  • postprocessing si concentra sul miglioramento dell'efficienza di runtime del codice

È vero che anche i preprocessori approfondiscono il regno del codice efficiente (un esempio comune è la minificazione) e la ragione è semplicemente perché possono farlo. Perché costringere gli sviluppatori a utilizzare un altro strumento per minimizzare l'output LESS quando un semplice passaggio implementato dal compilatore LESS potrebbe farlo?

Vedendo come i preprocessori hanno un migliore accesso alle intenzioni dello sviluppatore, hanno un potenziale per fornire migliori ottimizzazioni rispetto ai postprocessori. In pratica, uno strumento specializzato potrebbe produrre risultati migliori.

Non vi è alcun motivo per non utilizzare sia un preprocessore che un postprocessore, ma l'utilità effettiva dovrebbe essere determinata caso per caso (entrambe le combinazioni di strumenti e casi d'uso possono influenzarla). È completamente possibile ottenere i migliori risultati disattivando alcune funzionalità del preprocessore e affidandosi al postprocessore per esse.

    
risposta data 07.11.2014 - 10:06
fonte

Leggi altre domande sui tag