2015-10-12 10 views
8

Vari tutorial su Ruby on Rails incoraggiano l'instillazione della gemma bootstrap-sass. Perché questa è una convenzione piuttosto che una CDN?Bootstrap-sass Gem v.s. CDN

ho incluso nell'intestazione della mia app:

<!-- BOOTSTRAP CSS 3.3.5 CDN: --> <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet"> 

E nel piè di pagina:

<!-- BOOTSTRAP JS 3.3.5 CDN --><script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js" type="text/javascript"></script> 

Supponendo Sto sempre lavorando da una scatola di sviluppo che è connesso a Internet: Cosa è il ragionamento dietro l'utilizzo della gemma bootstrap piuttosto che puntare a un CDN? Non è sempre più veloce puntare a un CDN in cui è probabile che un client abbia già il file nella cache?

risposta

10

La probabile ragione per cui i tutorial di Rails suggeriscono la gemma bootstrap-sass è solo una questione di convenienza; come sviluppatori di Rails siamo abituati ad aggiungere una linea al nostro Gemfile per integrare le librerie di terze parti.

Ci sono ulteriori vantaggi per la gemma: dopo aver effettuato uno bundle install non è necessaria una connessione Internet per caricare le risorse dell'ambiente di sviluppo (non è necessario connettersi a una rete CDN esterna). Inoltre è possibile utilizzare SASS per sovrascrivere le variabili di mixin Bootstrap e personalizzare il framework.

Questi vantaggi a parte, se non si sta personalizzando Bootstrap, non è necessario utilizzare la gemma boostrap-sass in produzione. In effetti, la tua argomentazione sui client che possiedono già versioni hosted di CDN di comuni framework JS/CSS è certamente valida.

Risposta breve: non pensare alla gemma boostrap-sass come una convenzione. È un buon punto di partenza per la personalizzazione, ma se non è necessaria alcuna personalizzazione è perfettamente ragionevole andare con una CDN.

+0

Supponendo che le versioni siano le stesse, sarebbe ragionevole includere la gem di bootstrap nel "gruppo: sviluppo" per consentire lo sviluppo locale senza Internet? – woodenfox

+0

In generale, mi aspetto che la personalizzazione di Bootstrap avvenga in un file CSS separato (quindi non modificare direttamente i file Bootstrap originali). Ho difficoltà a vedere un motivo per cui avresti mai eseguito la gemma bootstrap-sass in produzione. – woodenfox

+0

È possibile farlo, ma è necessario apportare modifiche ai layout di visualizzazione e/o ai file manifest di asset per fare riferimento condizionatamente al cdn o alla variante locale di Bootstrap in base a Rails.env. –

-1

L'utilizzo del CDN fornisce semplicemente CSS, che collega i file HTML a una versione di bootstrap specifica. L'utilizzo della versione SASS/LESS del bootstrap, al contrario, ti consente di inserire classi semantiche sul tuo codice HTML e di creare una connessione tra le tue classi semantiche e Bootstrap nei file SASS/LESS specifici dell'app (usando le istruzioni @import, @extend ...)

Se si utilizza saggiamente questa tecnica, si otterranno download di dimensioni inferiori poiché si importano solo le parti del bootstrap effettivamente in uso nell'applicazione e si avrà una separazione netta delle preoccupazioni, consentendo di cambiare sass/less frameworks senza toccare i tuoi file HTML (idealmente).