Смысл использования CDN заключается в том, что он быстрее , во-первых, потому что это распределенная сеть, а во-вторых, потому что статические файлы кэшируются браузерами и высоки шансы, например, jqueryбиблиотеки CDN, что ваш сайт Пользователь уже загружал браузер пользователя, и, следовательно, файл был кэширован, и, следовательно, ненужная загрузка не происходит. Тем не менее, это все еще хорошая идея, чтобы обеспечить запасной вариант .
Теперь точка загрузки пакета npm
является то, что он предоставляет файл Javascript начальной загрузки в качестве модуля . Как было упомянуто выше, это дает ему возможность requireиспользовать browserify , который является наиболее вероятным вариантом использования и, как я понимаю, основной причиной публикации загрузчика на npm.
Как это использовать
Представьте себе следующую структуру проекта:
проект
| - node_modules
| - общедоступный
| | - css
| | - img
| | - JS
| | - index.html
| - package.json
В вашем index.htmlвы можете ссылаться как на файлы, так cssи на jsтакие:
<link rel="stylesheet" href="../node_modules/bootstrap/dist/css/bootstrap.min.css">
<script src="../node_modules/bootstrap/dist/js/bootstrap.min.js"></script>
Какой самый простой способ и правильный для .cssфайлов. Но гораздо лучше включить такой bootstrap.jsфайл в ваши public/js/*.jsфайлы:
var bootstrap = require('bootstrap');
И вы включаете этот код только в те javascriptфайлы, которые вам действительно нужны bootstrap.js. Browserify позаботится о включении этого файла для вас.
Недостатком является то, что теперь у вас есть внешние файлы в качестве node_modulesзависимостей, и node_modulesпапка обычно не регистрируется git. Я думаю, что это самая противоречивая часть, со многими мнениями и решениями .
ОБНОВЛЕНИЕ март 2017
Прошло почти два года с тех пор, как я написал этот ответ, и обновление уже на месте.
Теперь общепринятым способом является использование такого пакета, как WebPack (или другой Bundler выбора) , чтобы связать все свои активы на стадии сборки.
Во-первых, он позволяет вам использовать синтаксис commonjs точно так же, как browserify, поэтому, чтобы включить загрузочный код js в ваш проект, вы делаете то же самое:
const bootstrap = require('bootstrap');
Что касается cssфайлов, в webpack есть так называемые « загрузчики ». Они позволяют вам написать это в своем коде JS:
require('bootstrap/dist/css/bootstrap.css');
и CSS-файлы будут «волшебным образом» включены в вашу сборку. Они будут динамически добавляться в виде <style />тегов при запуске приложения, но вы можете настроить веб-пакет для экспорта их в виде отдельного cssфайла. Вы можете прочитать больше об этом в документации веб-пакета.
В заключение.
- Вы должны «связать» код своего приложения с помощью упаковщика
- Вы не должны фиксировать ни
node_modulesgit, ни динамически создаваемые файлы. Вы можете добавить buildскрипт в npm, который следует использовать для развертывания файлов на сервере. В любом случае, это можно сделать по-разному, в зависимости от предпочитаемого вами процесса сборки.