小编典典

通过 npm 安装 Twitter Bootstrap 的目的?

all

问题一:

通过 npm 安装 Twitter Bootstrap 的目的到底是什么?我认为 npm 是为服务器端模块设计的。自己提供引导文件是否比使用 CDN 更快?

问题2:

如果我要 npm install Bootstrap,我将如何指向 bootstrap.js 和 bootstrap.css 文件?


阅读 83

收藏
2022-05-30

共1个答案

小编典典

  1. 使用 CDN 的重点是它 更快 ,首先,因为它是一个 分布式 网络,其次,因为静态文件正在被浏览器缓存,并且很有可能,例如,jquery您网站的 CDN 库用户的浏览器已经下载了使用,因此该文件已被缓存,因此不会进行不必要的下载。话虽如此,提供 fallback仍然是一个好主意。

现在,bootstrap 的 npm 包的重点

是它提供了 bootstrap 的 javascript 文件作为 模块
。如上所述,这使得require使用browserify成为可能,这是最有可能的用例,据我所知,这也是在
npm 上发布引导程序的主要原因。

  1. 如何使用它

想象以下项目结构:

    项目
|-- 节点模块
|-- 公开
| |-- css
| |--图片
| |-- js
| |-- 索引.html
|-- 包.json

在您的文件中,index.html您可以同时引用cssjs文件,如下所示:

<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.jsBrowserify负责为您包含此文件。

现在,缺点是您现在将前端文件作为node_modules依赖项,并且该node_modules文件夹通常不使用git.
我认为这是最有争议的部分,有很多意见解决方案


2017 年 3 月更新

自从我写下这个答案并且更新已经到位已经快两年了。

现在普遍接受的方法是使用 webpack
之类的捆绑(或其他选择的捆绑器)在构建步骤中捆绑所有资产。

首先,它允许你像 browserify 一样使用 commonjs 语法,所以要在你的项目中包含 bootstrap js 代码,你也可以这样做:

const bootstrap = require('bootstrap');

至于css文件,webpack 有所谓的“ loaders
”。它们允许您在 js 代码中编写此代码:

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

并且 css 文件将“神奇地”包含在您的构建中。当您的应用程序运行时,它们将作为<style />标签动态添加,但您可以配置 webpack
以将它们导出为单独的css文件。你可以在 webpack 的文档中阅读更多相关信息。

综上所述。

  1. 您应该使用捆绑器“捆绑”您的应用程序代码
  2. 您不应该node_modules将动态构建的文件或动态构建的文件提交给 git。您可以向 npm 添加一个build脚本,该脚本应该用于在服务器上部署文件。无论如何,这可以根据您首选的构建过程以不同的方式完成。
2022-05-30