Pre-Processori vs Pure Web [chiuso]

2

Sembra che negli ultimi anni circa i preprocessori HTML / CSS / JavaScript siano esplosi in quantità e uso generale. Non sono ancora così comuni come puro HTML, CSS e JS / jQuery, ma la loro popolarità generale sembra essere in crescita se siti come CodePen sono una indicazione. Dopo aver letto su tutorial per Haml, Jade, SASS, Coffeescript, ecc. Sono onestamente un po 'confuso. Hanno tutti dei benefici, comprensibilmente, ma in realtà sembrano lingue molto miopi. Con l'eccezione di SASS / SCSS sembra che cose semplici come la creazione di tag div in un preprocessore HTML o l'aggiunta di eventi in un preprocessore JS siano molto, molto semplici, ma quando entrate in funzioni più complesse o nella creazione di template, diventano persino più complesso delle lingue per cui vengono elaborati.

Tutto sommato senza l'innato supporto del browser che dubito che nessuno di questi preproc non avrà nessuna delle lingue, per me, mi sento come se fossero in corsa per avere successo in qualsiasi posto al di fuori della loro base di utenti consolidata. Il mio problema è che non vedo nemmeno un vantaggio per scavare davvero in nessuno dei linguaggi di preproc. Usandoli, potrei creare un sito web dal primo millennio abbastanza facilmente, ma in realtà se ho bisogno di creare un sito moderno sembra essere una perdita di tempo per conoscere qualcuno di essi mentre potrei semplicemente codificarlo con HTML / CSS / JS (jQuery).

La mia domanda è: mi manca qualcosa nella più ampia portata di tutto questo? Quali sono i vantaggi dell'uso di questi linguaggi preprocd, soprattutto considerando che non sono supportati dal browser? Come sviluppatore web vale la pena dedicare del tempo per imparare qualcuna di esse?

    
posta zfrisch 06.05.2015 - 20:29
fonte

2 risposte

6

Vedo molti motivi per cui dovresti utilizzare i linguaggi preelaborati e cercherò di dimostrare i vantaggi di tali strumenti.

1. Spostamento di paradigma

Secondo me, la più grande caratteristica di qualsiasi linguaggio pre-elaborato è la capacità di sviluppare e risolvere problemi in un modo diverso rispetto al modo standard HTML / CSS / JS. In breve, la pre-elaborazione può portare a (ma non sempre) un cambio di paradigma.

Perché è potente? Alcuni problemi sono facilmente risolvibili in un paradigma, altri in un altro paradigma. Ciò che è potente è che puoi creare qualsiasi paradigma e convenzione che mappa in HTML / CSS / JS per risolvere in modo efficiente un particolare problema.

Il più famoso cambio di paradigma è fatto dai compilatori C, trasformando il C / C ++ facile da scrivere in un ASM efficiente ma difficile da scrivere.

In teoria, potresti creare una mappatura tra CSS e JS sufficientemente complessi, qualsiasi designer CSS-aware potrebbe quindi utilizzare JS tramite strumenti ben noti.

2. Ottimizzazione offline

Non è necessario essere pre-elaborati per spostare il paradigma, jQuery cambia paradigma in fase di runtime. Ciò che è fantastico con gli strumenti pre-elaborati è che il costo è (soprattutto) invisibile in fase di runtime.

L'utilizzo di un linguaggio compilato rispetto a una libreria o un toolkit run-time è, secondo la mia esperienza, sempre migliore in termini di prestazioni finali. Questo è molto intuitivo, se una parte di codice viene compilata una volta in un codice di basso livello ottimizzato senza alcuna dipendenza, dovrebbe funzionare meglio rispetto allo stesso pezzo di codice eseguito in fase di esecuzione da una libreria.

Questo non è affatto nuovo, i compilatori sono stati i primi (per quanto ne so) a introdurre questo tipo di trasformazioni e il primo a introdurre ottimizzazioni. Questa tecnica si è dimostrata efficiente molto tempo in passato in ambiente non Web.

3. Polyfill a livello di lingua

Il mondo web è basato su browser (boom! mind blown!), questi browser sono aggiornati e distribuiti a ritmi diversi, la maggior parte degli sviluppatori web potrebbe dover gestire browser obsoleti un giorno o l'altro.

Fino ad ora, molte grandi biblioteche sono riuscite a colmare queste lacune per noi. Sì, sto pensando al grande e potente jQuery, molte grazie a coloro che hanno contribuito a questa fantastica libreria. Il problema è che la libreria può essere scritta solo all'interno dello scopo del linguaggio in cui sono scritti e, a differenza di Ruby, non è possibile eseguire la meta-programmazione di tutto in JS. Purtroppo, i browser non riescono ancora a capire il rubino.

Questo è applicabile principalmente a JS ma è valido anche con CSS e HTML. Per implementare una nuova parola chiave o una nuova struttura linguistica (per risolvere i problemi più velocemente, cambiare il paradigma e tutto il resto), è necessario utilizzare la pre-elaborazione. La pre-elaborazione ti libera da molti tipi di limiti all'interno della lingua, a differenza delle librerie.

Vuoi usare il nuovo ES6 adesso perché il tuo codice sarà più manutenibile che mai? Puoi! Vuoi seguire il tuo linguaggio di programmazione e scegliere come target un browser? Puoi! (usa emscripten).

4. Perché possiamo (in un ragionevole lasso di tempo)

Poiché il tempo di scrivere, compilare (SASS o Coffeescript nel mio caso) non è più un problema, è istantaneo e può essere attivato su file salvati con la toolchain giusta. Anche la build toolchain si è evoluta, vediamo sempre più grandi strumenti di sviluppo come bower, yeoman, gulp, ...

Lo sviluppatore del frontend ora è armato con una toolchain matura ed è pronto ad affrontare ogni problema comune in pochi secondi. Facili da installare e gestire, gli strumenti e i processi di creazione dovrebbero far parte del progetto e ora dovrebbero essere pronti per accettare una fase di pre-elaborazione. (anche se tu solo ti rendi conto)

Conclusione

L'uso di linguaggi / strumenti compilati non è più un problema, e dovresti utilizzare qualsiasi strumento che soddisfi le tue esigenze. Il fatto che debba essere compilato non dovrebbe essere un blocco.

    
risposta data 06.05.2015 - 21:42
fonte
5

Il tema generale della tua domanda sembra riassumibile sinteticamente nell'ultimo paragrafo: "Quali sono i vantaggi dell'uso di questi linguaggi preprocessi, soprattutto visto che non sono supportati dal browser? "

La cosa fantastica dei processori pre è che loro non hanno bisogno di essere supportati dai browser . Stanno prendendo l'input web non nativo e poi lo trasformano in qualcosa che il browser capisce.

Perché non usare vanilla HTML, CSS e JavaScript? La semplice risposta è per farti risparmiare tempo. Ecco perché esistono i preprocessori.

Alcuni potrebbero risparmiare tempo creando automaticamente fallback per i browser più vecchi. Alcuni potrebbero risparmiare tempo creando una struttura più manutenibile rispetto a HTML, CSS o JavaScript. Alcuni potrebbero risparmiare tempo controllando la presenza di errori durante la compilazione.

Certo, questi preprocessori hanno ciascuno basi utente più piccole rispetto alle tecnologie di base del web. Ma va bene. Stai creando siti Web per gli utenti finali su Internet, non solo per coloro che conoscono Sass. Alla fine della giornata, dopo la pre-elaborazione, alla fine sono solo HTML, CSS e JavaScript.

Inoltre, non avere la sensazione di doverli raggruppare tutti insieme - alcuni preprocessori sono fantastici, altri non altrettanto grandi, altri probabilmente fanno schifo.

Scegli quelli che hanno senso per te e i tuoi progetti.

    
risposta data 07.05.2015 - 14:01
fonte

Leggi altre domande sui tag