-
使用CDN的重点是它更快,首先,因为它是一个分布式网络,其次,因为静态文件正在被缓存例如,您的站点使用的 CDN 的 jquery 库已经被用户的浏览器下载,因此该文件已被缓存,因此不会发生不必要的下载。话虽如此,to provide a fallback 仍然是个好主意。
现在,bootstrap 的 npm 包的重点
是它提供了bootstrap的javascript文件作为module。如上所述,这使得使用browserify 来require 成为可能,这是最有可能的用例,据我所知,这也是在 npm 上发布引导程序的主要原因。
-
如何使用
想象以下项目结构:
项目
|-- 节点模块
|-- 公开
| |-- css
| |--图片
| |-- js
| |-- 索引.html
|-- 包.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 文件。但最好在 public/js/*.js 文件中的某处包含这样的 bootstrap.js 文件:
var bootstrap = require('bootstrap');
并且您仅在您实际需要bootstrap.js 的那些javascript 文件中包含此代码。 Browserify 负责为您添加此文件。
现在,缺点是您现在将前端文件作为node_modules 依赖项,并且node_modules 文件夹通常不会使用git 签入。我认为这是最有争议的部分,有很多opinions和solutions。
2017 年 3 月更新
自从我写下这个答案并且更新已经到位已经快两年了。
现在普遍接受的方法是使用 bundler,如 webpack(或其他选择的捆绑器)在构建步骤中捆绑所有资产。
首先,它允许你像 browserify 一样使用 commonjs 语法,所以在你的项目中包含 bootstrap js 代码你也可以这样做:
const bootstrap = require('bootstrap');
对于css 文件,webpack 有所谓的“loaders”。它们允许您在 js 代码中编写此代码:
require('bootstrap/dist/css/bootstrap.css');
css 文件将“神奇地”包含在您的构建中。
当您的应用程序运行时,它们将被动态添加为 <style /> 标签,但您可以配置 webpack 以将它们导出为单独的 css 文件。您可以在 webpack 的文档中阅读更多相关信息。
总结。
- 您应该使用捆绑器“捆绑”您的应用代码
- 您不应该将
node_modules 或动态构建的文件提交给git。您可以向 npm 添加一个 build 脚本,该脚本应该用于在服务器上部署文件。无论如何,这可以根据您首选的构建过程以不同的方式完成。