Punktem użyciu CDN jest to, że szybciej , przede wszystkim dlatego, że jest rozprowadzany siecią, ale po drugie, ponieważ pliki statyczne są buforowane przez przeglądarkę, a szanse są wysokie, że, na przykład, CDN jest jquerybiblioteka, że strona użycie zostało już pobrane przez przeglądarkę użytkownika, a zatem plik został buforowany, a zatem niepotrzebne jest pobieranie. Biorąc to pod uwagę, nadal dobrym pomysłem jest zapewnienie rezerwy .
Teraz punkt pakietu npm bootstrap
jest to, że zapewnia on plik javascript bootstrap jako moduł . Jak już wspomniano powyżej, to sprawia, że możliwe requirejest przy użyciu browserify , który jest najprawdopodobniej przypadek użycia i, jak rozumiem, głównym powodem bootstrap publikowane na KMP.
Jak tego użyć
Wyobraź sobie następującą strukturę projektu:
projekt
| - moduły_węzła
| - publiczny
| | - css
| | - img
| | - js
| | - index.html
| - pakiet.json
W twoim index.htmlmożesz odwoływać się zarówno cssdo jsplików, jak i do takich:
<link rel="stylesheet" href="../node_modules/bootstrap/dist/css/bootstrap.min.css">
<script src="../node_modules/bootstrap/dist/js/bootstrap.min.js"></script>
Który jest najprostszy i popraw .csspliki. Ale o wiele lepiej jest umieścić taki bootstrap.jsplik gdzieś w swoich public/js/*.jsplikach:
var bootstrap = require('bootstrap');
I dołączasz ten kod tylko do tych javascriptplików, w których naprawdę potrzebujesz bootstrap.js. Browserify zajmuje się dołączeniem tego pliku.
Wadą jest to, że masz teraz pliki interfejsu jako node_moduleszależności, a node_modulesfolder zwykle nie jest rejestrowany za pomocą git. Myślę, że jest to najbardziej kontrowersyjna część, z wieloma opiniami i rozwiązaniami .
AKTUALIZACJA Marzec 2017
Minęły prawie dwa lata, odkąd napisałem tę odpowiedź, i aktualizacja jest na miejscu.
Teraz powszechnie akceptowanym sposobem jest użycie Bundler jak WebPack (lub inny Bundler wyboru), aby zawierać wszystkie swoje aktywa na etapie kompilacji.
Po pierwsze, pozwala na użycie składni commonjs podobnie jak browserify, więc aby dołączyć kod js bootstrap do swojego projektu, wykonaj to samo:
const bootstrap = require('bootstrap');
Co do cssplików, WebPack jest tak zwane „ ładowarki ”. Pozwalają ci napisać to w kodzie js:
require('bootstrap/dist/css/bootstrap.css');
a pliki css będą „magicznie” zawarte w twojej kompilacji. Będą one dynamicznie dodawane jako <style />tagi podczas działania aplikacji, ale możesz skonfigurować webpack, aby eksportował je jako osobny cssplik. Możesz przeczytać więcej na ten temat w dokumentacji pakietu.
Podsumowując
- Powinieneś „powiązać” swój kod aplikacji z pakietem
- Nie powinieneś zatwierdzać ani
node_modulesgit, ani dynamicznie budowanych plików. Możesz dodać buildskrypt do npm, który powinien zostać użyty do wdrożenia plików na serwerze. W każdym razie można to zrobić na różne sposoby, w zależności od preferowanego procesu kompilacji.