Il punto di usare CDN è che è più veloce , prima di tutto, perché è una rete distribuita , ma in secondo luogo, perché i file statici vengono memorizzati nella cache dai browser e le probabilità sono alte che, ad esempio, la jquery
libreria della CDN che il tuo sito gli usi erano già stati scaricati dal browser dell'utente e quindi il file era stato memorizzato nella cache e pertanto non si sta eseguendo alcun download non necessario. Detto questo, è comunque una buona idea fornire un fallback .
Ora, il punto del pacchetto npm di bootstrap
è che fornisce il file javascript di bootstrap come modulo . Come accennato in precedenza, ciò gli consente di require
utilizzare browserify , che è il caso d'uso più probabile e, a quanto ho capito, il motivo principale per cui bootstrap è stato pubblicato su npm.
Come usarlo
Immagina la seguente struttura del progetto:
progetto
| - node_modules
| - pubblico
| | - css
| | - img
| | - js
| | - index.html
| - package.json
Nel vostro index.html
è possibile fare riferimento sia css
e js
file in questo modo:
<link rel="stylesheet" href="../node_modules/bootstrap/dist/css/bootstrap.min.css">
<script src="../node_modules/bootstrap/dist/js/bootstrap.min.js"></script>
Qual è il modo più semplice e corretto per i .css
file. Ma è molto meglio includere il bootstrap.js
file come questo da qualche parte nei tuoi public/js/*.js
file:
var bootstrap = require('bootstrap');
E includi questo codice solo nei javascript
file in cui hai effettivamente bisogno bootstrap.js
. Browserify si occupa di includere questo file per te.
Ora, lo svantaggio è che ora hai i tuoi file front-end come node_modules
dipendenze e la node_modules
cartella di solito non è archiviata git
. Penso che questa sia la parte più controversa, con molte opinioni e soluzioni .
AGGIORNAMENTO Marzo 2017
Sono passati quasi due anni da quando ho scritto questa risposta e un aggiornamento è in atto.
Ora il modo generalmente accettato è quello di utilizzare un bundler come webpack (o un altro bundler di scelta) per raggruppare tutte le risorse in una fase di creazione.
In primo luogo, ti consente di utilizzare la sintassi commonjs proprio come browserify, quindi per includere il codice js bootstrap nel tuo progetto fai lo stesso:
const bootstrap = require('bootstrap');
Per quanto riguarda i css
file, il webpack ha i cosiddetti " caricatori ". Ti permettono di scrivere questo nel tuo codice js:
require('bootstrap/dist/css/bootstrap.css');
e i file CSS saranno "magicamente" inclusi nella tua build. Verranno aggiunti dinamicamente come <style />
tag quando l'app viene eseguita, ma è possibile configurare il webpack per esportarli come css
file separato . Puoi leggere di più al riguardo nella documentazione di webpack.
In conclusione.
- È necessario "raggruppare" il codice dell'app con un bundler
- Non dovresti impegnare né
node_modules
git né i file creati dinamicamente. È possibile aggiungere uno build
script a npm che dovrebbe essere utilizzato per distribuire file sul server. Ad ogni modo, questo può essere fatto in diversi modi a seconda del processo di compilazione preferito.