问题一:
通过 npm 安装 Twitter Bootstrap 的目的到底是什么?我认为 npm 是为服务器端模块设计的。自己提供引导文件是否比使用 CDN 更快?
问题2:
如果我要 npm install Bootstrap,我将如何指向 bootstrap.js 和 bootstrap.css 文件?
jquery
是它提供了 bootstrap 的 javascript 文件作为 模块 。如上所述,这使得require使用browserify成为可能,这是最有可能的用例,据我所知,这也是在 npm 上发布引导程序的主要原因。
require
想象以下项目结构:
项目 |-- 节点模块 |-- 公开 | |-- css | |--图片 | |-- js | |-- 索引.html |-- 包.json
在您的文件中,index.html您可以同时引用css和js文件,如下所示:
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:
.css
bootstrap.js
public/js/*.js
var bootstrap = require('bootstrap');
javascript并且您仅在您实际需要的那些文件中包含此代码bootstrap.js。Browserify负责为您包含此文件。
javascript
现在,缺点是您现在将前端文件作为node_modules依赖项,并且该node_modules文件夹通常不使用git. 我认为这是最有争议的部分,有很多意见和解决方案。
node_modules
git
自从我写下这个答案并且更新已经到位已经快两年了。
现在普遍接受的方法是使用 webpack 之类的捆绑器(或其他选择的捆绑器)在构建步骤中捆绑所有资产。
首先,它允许你像 browserify 一样使用 commonjs 语法,所以要在你的项目中包含 bootstrap js 代码,你也可以这样做:
const bootstrap = require('bootstrap');
至于css文件,webpack 有所谓的“ loaders ”。它们允许您在 js 代码中编写此代码:
require('bootstrap/dist/css/bootstrap.css');
并且 css 文件将“神奇地”包含在您的构建中。当您的应用程序运行时,它们将作为<style />标签动态添加,但您可以配置 webpack 以将它们导出为单独的css文件。你可以在 webpack 的文档中阅读更多相关信息。
<style />
综上所述。
build