问题1:
通过npm安装Twitter bootstrap 程序的目的到底是什么?我以为npm是为服务器端模块设计的.自己提供 bootstrap 文件比使用CDN更快吗?
问题2:
如果我要npm安装 bootstrap 程序,我将如何指向 bootstrap 程序.js和bootstrap.css文件?
问题1:
通过npm安装Twitter bootstrap 程序的目的到底是什么?我以为npm是为服务器端模块设计的.自己提供 bootstrap 文件比使用CDN更快吗?
问题2:
如果我要npm安装 bootstrap 程序,我将如何指向 bootstrap 程序.js和bootstrap.css文件?
使用CDN的意义在于它是faster,首先是因为它是一个distributed网络,其次是因为浏览器正在缓存静态文件,并且很有可能,例如,您的站点使用的CDN jquery
库已经被用户的浏览器下载,因此文件已经被缓存,因此没有不必要的下载发生.尽管如此,这仍然是一个好主意.
它将 bootstrap 的javascript文件作为module文件提供.如上所述,这使得使用browserify来实现require
it成为可能,这是最有可能的用例,据我所知,也是 bootstrap 发布在npm上的主要原因.
想象一下以下项目 struct :
project |-- node_modules |-- public | |-- 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
个文件,最简单的方法是正确的.但最好在public/js/*.js
个文件中的某个地方包含这样的bootstrap.js
文件:
var bootstrap = require('bootstrap');
你只需要在javascript
个文件中包含这段代码,而这些文件实际上需要bootstrap.js
个.Browserify负责为您包含此文件.
现在,缺点是您现在将前端文件作为node_modules
个依赖项,而node_modules
文件夹通常不使用git
签入.我认为这是最有争议的部分,有opinions和solutions个.
自从我写下这个答案以来,已经过go 了将近两年,更新已经到位.
现在,普遍接受的方法是使用bundler-like webpack(或另一个 Select 的绑定器)在构建步骤中绑定所有assets资源 .
首先,它允许您像browserify一样使用commonjs语法,所以要在项目中包含 bootstrap js代码,您也可以这样做:
const bootstrap = require('bootstrap');
至于css
个文件,webpack称之为"loaders".它们允许您在js代码中编写:
require('bootstrap/dist/css/bootstrap.css');
css文件将"神奇地"包含在您的构建中.
总之.
node_modules
或动态构建的文件提交给git.您可以向npm添加build
脚本,该脚本应用于在服务器上部署文件.无论如何,这可以通过不同的方式来完成,具体取决于您首选的构建过程.