El punto de usar CDN es que es más rápido , en primer lugar, porque es una red distribuida , pero en segundo lugar, porque los navegadores almacenan en caché los archivos estáticos y hay muchas posibilidades de que, por ejemplo, la jquerybiblioteca de CDN sea su sitio los usos ya habían sido descargados por el navegador del usuario y, por lo tanto, el archivo se había almacenado en caché y, por lo tanto, no se realiza ninguna descarga innecesaria. Dicho esto, sigue siendo una buena idea proporcionar un respaldo .
Ahora, el punto del paquete npm de bootstrap
es que proporciona el archivo javascript de bootstrap como módulo . Como se mencionó anteriormente, esto hace posible requireque use browserify , que es el caso de uso más probable y, según tengo entendido, la razón principal por la que bootstrap se publica en npm.
Cómo usarlo
Imagine la siguiente estructura del proyecto:
proyecto
| - node_modules
| - público
El | | - css
El | | - img
El | | - js
El | | - index.html
| - package.json
En el index.htmlse puede hacer referencia tanto cssy jsarchivos de la siguiente manera:
<link rel="stylesheet" href="../node_modules/bootstrap/dist/css/bootstrap.min.css">
<script src="../node_modules/bootstrap/dist/js/bootstrap.min.js"></script>
Cuál es la forma más simple y correcta para los .cssarchivos. Pero es mucho mejor incluir el bootstrap.jsarchivo como este en algún lugar de sus public/js/*.jsarchivos:
var bootstrap = require('bootstrap');
E incluye este código solo en aquellos javascriptarchivos donde realmente lo necesita bootstrap.js. Browserify se encarga de incluir este archivo por usted.
Ahora, el inconveniente es que ahora tiene sus archivos front-end como node_modulesdependencias, y la node_modulescarpeta generalmente no se registra con git. Creo que esta es la parte más controvertida, con muchas opiniones y soluciones .
ACTUALIZACIÓN Marzo 2017
Han pasado casi dos años desde que escribí esta respuesta y hay una actualización en su lugar.
Ahora la forma generalmente aceptada es usar un paquete como webpack (u otro paquete de elección) para agrupar todos sus activos en un paso de compilación.
En primer lugar, le permite usar la sintaxis commonjs al igual que browserify, por lo que para incluir el código bootstrap js en su proyecto, haga lo mismo:
const bootstrap = require('bootstrap');
En cuanto a los cssarchivos, webpack ha llamado " cargadores ". Le permiten escribir esto en su código js:
require('bootstrap/dist/css/bootstrap.css');
y los archivos css se incluirán "mágicamente" en su compilación. Se agregarán dinámicamente como <style />etiquetas cuando se ejecute la aplicación, pero puede configurar el paquete web para exportarlas como un cssarchivo separado . Puede leer más sobre eso en la documentación de webpack.
En conclusión.
- Debe "agrupar" el código de su aplicación con un agrupador
- No debe confirmar
node_modulesni los archivos generados dinámicamente en git. Puede agregar un buildscript a npm que se debe usar para implementar archivos en el servidor. De todos modos, esto se puede hacer de diferentes maneras dependiendo de su proceso de compilación preferido.