Der Sinn der Verwendung von CDN besteht darin, dass es schneller ist, zum einen, weil es sich um ein verteiltes Netzwerk handelt, zum anderen, weil die statischen Dateien von den Browsern zwischengespeichert werden und die Wahrscheinlichkeit hoch ist, dass beispielsweise die CDN- jqueryBibliothek Ihre Site ist Verwendungen wurden bereits vom Browser des Benutzers heruntergeladen, und daher wurde die Datei zwischengespeichert, und daher findet kein unnötiger Download statt. Trotzdem ist es immer noch eine gute Idee , einen Fallback bereitzustellen .
Nun zum Punkt des npm-Pakets von bootstrap
ist, dass es die Javascript- Datei von Bootstrap als Modul bereitstellt . Wie oben erwähnt, ermöglicht dies die requireVerwendung von browserify , was der wahrscheinlichste Anwendungsfall und nach meinem Verständnis der Hauptgrund für die Veröffentlichung von Bootstrap auf npm ist.
Wie man es benutzt
Stellen Sie sich folgende Projektstruktur vor:
Projekt
| - Knotenmodule
| - öffentlich
| | - css
| | - img
| | - js
| | - index.html
| - package.json
In Ihrem können index.htmlSie beide cssund jsDateien wie folgt referenzieren :
<link rel="stylesheet" href="../node_modules/bootstrap/dist/css/bootstrap.min.css">
<script src="../node_modules/bootstrap/dist/js/bootstrap.min.js"></script>
Welches ist der einfachste Weg und korrekt für die .cssDateien. Es ist jedoch viel besser, die bootstrap.jsDatei wie diese irgendwo in Ihre public/js/*.jsDateien aufzunehmen:
var bootstrap = require('bootstrap');
Und Sie fügen diesen Code nur in die javascriptDateien ein, in denen Sie ihn tatsächlich benötigen bootstrap.js. Browserify kümmert sich darum, diese Datei für Sie einzuschließen .
Der Nachteil ist nun, dass Sie jetzt Ihre Front-End-Dateien als node_modulesAbhängigkeiten haben und der node_modulesOrdner normalerweise nicht mit eingecheckt ist git. Ich denke, dies ist der umstrittenste Teil mit vielen Meinungen und Lösungen .
UPDATE März 2017
Fast zwei Jahre sind vergangen, seit ich diese Antwort geschrieben habe und ein Update vorhanden ist.
Die allgemein akzeptierte Methode besteht nun darin, einen Bundler wie das Webpack (oder einen anderen Bundler Ihrer Wahl) zu verwenden, um alle Ihre Assets in einem Build-Schritt zu bündeln.
Erstens können Sie die CommonJS-Syntax genau wie browserify verwenden. Um Bootstrap-JS-Code in Ihr Projekt aufzunehmen, gehen Sie wie folgt vor:
const bootstrap = require('bootstrap');
Was die cssDateien betrifft, hat Webpack sogenannte " Loader ". Sie ermöglichen es Ihnen, dies in Ihren js-Code zu schreiben:
require('bootstrap/dist/css/bootstrap.css');
und die CSS-Dateien werden "magisch" in Ihren Build aufgenommen. Sie werden dynamisch als <style />Tags hinzugefügt, wenn Ihre App ausgeführt wird. Sie können das Webpack jedoch so konfigurieren, dass sie als separate cssDatei exportiert werden. Weitere Informationen hierzu finden Sie in der Dokumentation zum Webpack.
Abschließend.
- Sie sollten Ihren App-Code mit einem Bundler "bündeln"
- Sie sollten weder
node_modulesnoch die dynamisch erstellten Dateien an git übergeben. Sie können buildnpm ein Skript hinzufügen , das zum Bereitstellen von Dateien auf dem Server verwendet werden soll. Dies kann jedoch auf verschiedene Arten erfolgen, abhängig von Ihrem bevorzugten Erstellungsprozess.