Cel instalacji Twitter Bootstrap przez npm?

Pytanie 1:

Jaki jest dokładnie cel instalacji Twitter Bootstrap przez npm? Myślałem, że npm jest przeznaczony dla modułów po stronie serwera. Czy szybsze jest samodzielne serwowanie plików bootstrap niż korzystanie z CDN?

Pytanie 2:

Gdybym miał npm zainstalować Bootstrap, jak miałbym wskazać bootstrap.js i bootstrap.pliki css?

Author: Michel, 2014-11-06

4 answers

  1. Sens korzystania z CDN polega na tym, że jest ona szybsza, Po pierwsze, ponieważ jest to sieć rozproszona, ale po drugie, ponieważ pliki statyczne są buforowane przez przeglądarki i istnieje duże prawdopodobieństwo, że na przykład Biblioteka CDN jquery, z której korzysta Twoja witryna, została już pobrana przez przeglądarkę użytkownika, a zatem plik został buforowany, a zatem nie ma niepotrzebnego pobierania. Mimo to, nadal jest to dobry pomysł , Aby należy podać rezerwę .

    Teraz, punkt pakietu npm Bootstrapa

    Jest to, że dostarcza plik javascript jako moduł . Jak już wspomniano powyżej, umożliwia to require to za pomocą browserify, co jest najbardziej prawdopodobnym przypadkiem użycia i, jak rozumiem, głównym powodem publikacji bootstrap na npm.

  2. Jak go używać

    Wyobraź sobie następującą strukturę projektu:

    project
    |-- node_modules
    |-- public
    |   |-- css
    |   |-- img
    |   |-- js
    |   |-- index.html
    |-- package.json
    
    

W twoim index.html możesz odwoływać się zarówno do css, jak i js plików w następujący sposób:

<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 najprostszym sposobem i poprawnym dla .css plików. Ale o wiele lepiej jest umieścić plik bootstrap.js taki jak ten gdzieś w plikach public/js/*.js:

var bootstrap = require('bootstrap');

I umieszczasz ten kod tylko w tych javascript plikach, w których faktycznie potrzebujesz bootstrap.js. Browserify zajmie się dołączeniem tego pliku za Ciebie.

Wadą jest to, że teraz masz pliki front-endu jako zależności node_modules, a folder node_modules zwykle nie jest sprawdzany 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 od napisania tej odpowiedzi i aktualizacja jest na miejscu.

Teraz ogólnie przyjętym sposobem jest użycie bundler Jak webpack (lub innego wybranego bundlera), aby połączyć wszystkie swoje zasoby w fazie budowania.

Po pierwsze, pozwala na używanie składni commonjs tak jak browserify, więc aby włączyć bootstrap kodu js w projekcie, robisz to samo:

const bootstrap = require('bootstrap');

Jeśli chodzi o pliki css, webpack posiada tzw. " loadery ". Pozwalają na zapisanie tego w kodzie js:

require('bootstrap/dist/css/bootstrap.css');

I pliki css będą "magicznie" zawarte w Twojej kompilacji. Po uruchomieniu aplikacji będą one dynamicznie dodawane jako znaczniki <style />, ale możesz skonfigurować webpack tak, aby eksportował je jako oddzielny plik css. Więcej na ten temat można przeczytać w dokumentacji webpacka.

Podsumowując.

    W tym celu należy kliknąć przycisk "Zapisz".]}
  1. nie powinieneś zatwierdzać ani node_modules, ani dynamicznie budowanych plików do Gita. Możesz dodać skrypt build do npm, który powinien być używany do wdrażania plików na serwerze. W każdym razie można to zrobić na różne sposoby, w zależności od preferowanego procesu budowania.
 117
Author: timetowonder,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-24 16:36:35

Jeśli NPM te moduły można obsługiwać za pomocą statycznego przekierowania.

Najpierw zainstaluj pakiety:

npm install jquery
npm install bootstrap

Następnie na serwerze.js:

var express = require('express');
var app = express();

// prepare server
app.use('/api', api); // redirect API calls
app.use('/', express.static(__dirname + '/www')); // redirect root
app.use('/js', express.static(__dirname + '/node_modules/bootstrap/dist/js')); // redirect bootstrap JS
app.use('/js', express.static(__dirname + '/node_modules/jquery/dist')); // redirect JS jQuery
app.use('/css', express.static(__dirname + '/node_modules/bootstrap/dist/css')); // redirect CSS bootstrap

Potem, w końcu, na .html:

<link rel="stylesheet" href="/css/bootstrap.min.css">
<script src="/js/jquery.min.js"></script>
<script src="/js/bootstrap.min.js"></script>

Nie serwowałbym stron bezpośrednio z folderu, w którym znajduje się twój serwer.plik js jest (który jest zwykle taki sam jak node_modules) jak zaproponowany przez timetowonder, w ten sposób ludzie mogą uzyskać dostęp do twojego serwera.plik js.

Oczywiście możesz po prostu pobrać i skopiować i wkleić na folder, ale z NPM można po prostu zaktualizować w razie potrzeby... chyba łatwiej.

 165
Author: Augusto Goncalves,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:47:18

Odpowiedź 1:

  • Pobieranie bootstrap przez npm (lub bower) pozwala uzyskać trochę czasu opóźnienia. Zamiast zdalnego zasobu dostajesz lokalny, jest to szybsze, chyba że używasz cdn (Sprawdź poniżej odpowiedź)

  • "npm" pierwotnie miał uzyskać moduł Node, ale wraz z istotą języka Javascript (i pojawieniem się browserify), trochę się rozwinął. W rzeczywistości możesz nawet pobrać AngularJS na npm, to nie jest strona serwera ramy. Browserify pozwala na korzystanie z AMD / RequireJS / CommonJS po stronie klienta, dzięki czemu Moduły węzłów mogą być używane po stronie klienta.

ODPOWIEDŹ 2:

Jeśli npm zainstalujesz bootstrap (jeśli nie użyjesz określonego pliku grunt lub gulp, aby przenieść się do folderu dist), Twój bootstrap będzie zlokalizowany w "./ node_modules/bootstrap / bootstrap./ min.css " jeśli się nie mylę.

 71
Author: mfrachet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-09 18:04:10
  1. Użyj npm / bower, aby zainstalować bootstrap, jeśli chcesz go przekompilować / zmienić mniej plików / przetestować. Z gruntem byłoby łatwiej to zrobić, jak pokazano na http://getbootstrap.com/getting-started/#grunt . Jeśli chcesz dodać tylko wstępnie skompilowane biblioteki, możesz ręcznie dołączać pliki do projektu.

  2. Nie, musisz to zrobić sam lub użyć oddzielnego narzędzia grunt. Na przykład 'grunt-contrib-concat' Jak połączyć i minifikować wiele plików CSS i JavaScript z gruntem.js (0.3.x)

 3
Author: 7affer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:10:30