Conoscere LibSass

LibSass sta diventando sempre più popolare ogni giorno. Non passa giorno senza che qualcuno affermi di aver spostato con orgoglio il proprio codice base su LibSass. Oh grande.

Ti senti un po 'perso? Non sei proprio sicuro di cosa sia LibSass, come funzioni e quali siano le differenze principali rispetto al Sass originale? Beh, non preoccuparti amico mio, ti ho coperto.

Cos'è LibSass?

Prima di spiegare cos'è LibSass, ricapitoliamo su cosa insolenza è. Sass è un preprocessore CSS scritto in Ruby. Per usare Sass, devi installarlo come gemma (un pacchetto Ruby) sulla tua macchina. Quindi puoi interagire con Sass dalla CLI (Command Line Interface) o con un'applicazione come Prepros.

Prestazione

LibSass è una porta di Sass scritta in C / C ++. Vedi, Ruby non è il linguaggio più veloce al mondo. E risulta essere piuttosto lento quando si parla di Sass. 

"Ruby non è una delle lingue più performanti del mondo, per non dire altro." - Kamil Bielawski

Non essendo uno sviluppatore Ruby, non so esattamente perché; forse la scrittura di file non è efficiente come potrebbe essere, sinceramente non lo so. Ma per qualsiasi motivo, Ruby Sass è lento e diventa ancora più lento su progetti di grandi dimensioni.

Questo ha raggiunto il punto in cui alcune persone si sono stancate del ritardo delle prestazioni e hanno deciso di iniziare a scrivere Sass in C / C ++, per accelerare i tempi di compilazione. Ciò che hanno inventato è stato LibSass.

involucro

Non puoi veramente usare LibSass da solo: hai bisogno di un wrapper. Ad esempio, Node-Sass è un wrapper NodeJS per LibSass. Ti permette di usare Node-Sass per compilare il tuo Sass da Node usando LibSass sotto. 

Node-Sass su npm

Ci sono anche SassC, Perl-Libsass, PHP-Sass e persino Ruby-LibSass, tutti con LibSass sotto. Tuttavia questi ultimi esempi non sono completamente aggiornati, quindi usiamo più comunemente Node-Sass.

Per riassumere, LibSass è la porta C / C ++ del programma originale di Sass scritto in Ruby. È pensato per essere avvolto, come fa Node-Sass per usare Sass da un ambiente Node. Obiettivo principale: essere incredibilmente veloce rispetto al Sass originale.

La differenza con il rubino Sass

Ok, quindi sappiamo cos'è LibSass. Sappiamo che LibSass è progettato per essere veloce come un unicorno arcobaleno robot. Buono. Allora perché non usiamo tutti LibSass in questo momento?

Il problema principale con LibSass è che è in ritardo rispetto all'implementazione originale di Ruby quando si tratta di funzionalità. Al momento della scrittura, LibSass 3.1 è pienamente compatibile con Sass 3.3, tuttavia molte funzionalità di Sass 3.4 non sono ancora disponibili. LibSass manca, ad esempio, l'uso del selettore di riferimento (&) in SassScript (la possibilità di leggerlo e aggiornarlo al volo con funzioni e simili).

Fortunatamente, i progettisti del nucleo di Sass hanno deciso di aspettare che LibSass riprendesse il passo prima di passare a Sass 3.5, quindi entrambe le versioni dovrebbero presto essere sincronizzate. Tuttavia, la versione di Ruby sarà sempre la versione principale: le patch e le release saranno sempre le prime su Ruby Sass, poi implementate da LibSass.

Quale scegliere?

Arriva il momento in cui devi decidere quale motore Sass vuoi eseguire: l'originale Ruby Sass o il nuovissimo LibSass? Come con tutto nel nostro campo, dipende.

Tutto sommato, probabilmente raccomanderei LibSass perché è generalmente più veloce di Ruby Sass e la velocità è tutto in questo mondo. Tuttavia, se hai bisogno di Sass per fare qualcosa di pazzo che richiede nuove funzionalità ancora da aggiungere a LibSass, Ruby sarebbe la scelta migliore.

Molto spesso, scoprirai che non è il caso di scegliere un compilatore Sass per un nuovo progetto, ma di ripensare quello che stai già utilizzando in modo che si adatti alla tua situazione. Se lavori su progetti di scala medio-grande, potresti provare un tempo di compilazione compreso tra 2 secondi e 30 secondi (sì ...) con Ruby Sass. Potrebbe essere peggio con dipendenze pesanti come la bussola.

A questo punto, ti ammalerai e ti stanchi di perdere 25 minuti al giorno aspettando la compilazione di Sass e prenderai seriamente in considerazione la possibilità di abbandonare alcune funzionalità per guadagnare velocità. In questo caso, LibSass sembra un cupcake gigante a forma di gattino, mentre Ruby Sass è più simile a un biscotto vecchio e secco ...

Fare l'interruttore

Per aiutarti a decidere se puoi trasferire l'intero codice base su LibSass, ho impostato il progetto Sass-Compatibility. Sass-Compatibility intende elencare tutte le principali incongruenze tra i diversi motori Sass (fondamentalmente Ruby Sass 3.2, Sass 3.3, Ruby Sass 3.4 e ultimo LibSass). Recentemente ho presentato il progetto su SitePoint, se vuoi aggiornarti.

Il progetto Sass-Compatibility

Nota: Sass-Compatibility usa SassMeister per eseguire i suoi test. SassMeister usa Node-Sass per eseguire LibSass. Tuttavia, Node-Sass non è ancora compatibile con LibSass 3.1 (anche se dovrebbe essere presto), il che significa che i risultati di Sass-Compatibility per LibSass sembrano peggio di quanto la situazione sia effettivamente.

Pensieri finali

Eccoci, gente. Spero che questo articolo ti abbia aiutato a capire cosa e perché di LibSass.

Siamo attualmente in una situazione strana in cui LibSass è estremamente conveniente grazie alla sua velocità, ma non fornisce tutto ciò che Ruby Sass fa, quindi non può ancora essere adottato incondizionatamente. Ben presto tutto si calmerà quando entrambe le versioni diventeranno pienamente compatibili.

Ora, dal momento che LibSass è molto più veloce di Ruby Sass (e penso che non importa quanto duramente provino gli sviluppatori di Ruby Sass, sarà sempre così), non so quale futuro ci possa essere per l'implementazione di Ruby. A un certo punto, non penso che abbia molto senso usare Ruby Sass se è più lento, a meno che non porti qualcosa in più al tavolo. Come diciamo: aspetta e vedi.