[解決済み】Twitter Bootstrapをnpmでインストールする目的とは?
質問
質問1:
Twitter Bootstrapをnpmでインストールする目的は一体何でしょうか?npmはサーバーサイドモジュールのためのものだと思っていました。CDNを使うより、自分でブートストラップファイルを提供する方が速いのですか?
質問2:
Bootstrapをnpmでインストールする場合、bootstrap.jsとbootstrap.cssのファイルはどのように指定するのですか?
どのように解決するのですか?
-
CDNを利用するポイントとしては より速く であるため、まず第一に 分散型 ネットワークに接続されていること、そして第二に、静的ファイルはブラウザによってキャッシュされているため、例えばCDN の
jquery
のライブラリは、ユーザーのブラウザによってすでにダウンロードされていたため、ファイルはキャッシュされており、不必要なダウンロードは行われていません。とはいえ、やはり フォールバックを提供するために .さて、bootstrapのnpmパッケージのポイントである
は、ブートストラップの ジャバスクリプト ファイルを モジュール . 上述したように、これによって
require
を使用しています。 ブラウザ化 これは最も可能性の高いユースケースであり、私の理解では、ブートストラップが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
.
ブラウザ化
は、このファイルを含めることを代行します。
さて、欠点は、フロントエンドのファイルを
node_modules
という依存関係があり
node_modules
フォルダは、通常、チェックインしていない
git
. ここが一番議論のあるところだと思います、たくさんの
意見
と
ソリューション
.
UPDATE 2017年3月
この回答を書いてから約2年が経過し、アップデートが実施されました。
現在、一般的に受け入れられている方法は バンドル のように ウェブパック (または他の任意のバンドル)を使用して、ビルドステップですべてのアセットをバンドルします。
まず、browserifyと同じようにcommonjsの構文が使えるので、プロジェクトにbootstrap jsのコードを含めるには、同じようにします。
const bootstrap = require('bootstrap');
については
css
ファイルは、webpack には " と呼ばれるものがあります。
ローダー
となります。これをjsのコードに書くことができるようになります。
require('bootstrap/dist/css/bootstrap.css');
を指定すると、css ファイルはビルドに魔法のように含まれます。
として動的に追加されます。
<style />
タグとしてエクスポートするように設定することができます。
css
ファイルを作成します。詳細は webpack のドキュメントを参照してください。
結論から言うと
- アプリのコードはbundlerでバンドルする必要があります。
-
どちらもコミットしてはいけません
node_modules
と動的にビルドされたファイルをgitに保存します。この場合build
スクリプトをnpmに追加し、それを使ってサーバーにファイルをデプロイします。いずれにせよ、これは好みのビルドプロセスに応じて、さまざまな方法で行うことができます。
関連
-
[解決済み] テスト
-
[解決済み】npm 5で作成されたpackage-lock.jsonファイルはコミットするのでしょうか?
-
[解決済み] Yarn にパッケージを強制的に再インストールさせるにはどうしたらいいですか?
-
[解決済み] npm WARN package.json: リポジトリフィールドがありません
-
[解決済み] npm installの-saveオプションは何ですか?
-
[解決済み] インストールされているnpmパッケージのバージョンを検索する
-
[解決済み] npm package.jsonファイルのdependencies, devDependencies, peerDependenciesの違いは何ですか?
-
[解決済み] Bowerとnpmの違いは何ですか?
-
[解決済み] Node.jsのnpmモジュールをアンインストールするにはどうすればよいですか?
-
[解決済み] Twitter Bootstrap 3を使用して列を中央に配置する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Node.js getaddrinfo ENOTFOUND
-
[解決済み】npx コマンドが見つかりません。
-
[解決済み】Express.js req.bodyが未定義です。
-
[解決済み] AWS lambda function error - Unable to import module 'index': エラー
-
[解決済み] nodeファイルの先頭にある"/usr/bin/env node "は、具体的には何をするのですか?
-
[解決済み] joiライブラリを使用して2つの時間を比較する方法
-
[解決済み] Node.jsで「btoaが定義されていない」エラーが発生する
-
[解決済み] node.jsのセットアップウィザードが途中で終了してしまう
-
[解決済み] node.js - リクエスト - "emitter.setMaxListeners() "はどのように?
-
[解決済み] HerokuでNode.jsアプリを作成する場合、Gitに「node_modules」フォルダをチェックインした方が良いですか?