私はクライアント側のプログラミングに反応スターターキットを使用しています。 reactとwebpackを使用します。 index.htmlまたは編集するHTMLはありません。すべてのjsファイル。私の質問は、ベンダーjs libをクラウドからロードしたい場合、どうすればいいですか?
HTMLファイルでそれを行うのは簡単でしょう。 <script src="https://forio.com/tools/js-libs/1.5.0/epicenter.min.js"></script>
ただし、jsファイルでは、npmインストール済みパッケージのみを使用します。上記のライブラリをhtmlファイルなしでインポートするにはどうすればよいですか?インポートを試みましたが、ローカルファイルでのみ機能します。
update 10/21/15これまでのところ、2つの方向を試しましたが、どちらも理想的ではありません。
<div id="app" dangerouslySetInnerHTML={{__html: this.props.body}} />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<script src="https://forio.com/tools/js-libs/1.5.0/epicenter.min.js"></script>
<script src="/app.js"></script>
<script dangerouslySetInnerHTML={this.trackingCode()} />
</body>
幸いなことに、それは機能します。jsファイルで他に何もする必要はなく、インポートも要求もありません。しかし、今では2つのjqueryライブラリがさまざまな方法でロードされています。 1つはここにあり、もう1つはnpmとwebpackを介しています。後で問題が発生するのだろうか。私が使用する反応ルーティングは、サーバー側の読み込みのためにブラウザウィンドウにホームパスを入力しないと「未定義変数」エラーが発生します。したがって、このソリューションはあまり良くありません。
<script src="https://forio.com/tools/js-libs/1.5.0/epicenter.min.js"></script>
を置き換えるためにそれを使用する方法がわかりません。Jsバンドルが添付されているユーザーに提供するために使用されているHTMLファイルが1つあります。おそらく、あなたはそのHTMLファイルにスクリプトタグを添付することができます
var $script = require("scriptjs");
$script("//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js", function() {
$('body').html('It works!')
});
JSでスクリプトタグを次のように作成できます。
$("body").append($("<script src="https://forio.com/tools/js-libs/1.5.0/epicenter.min.js"></script>"))
Webpackの externals を使用します。
externals
を使用すると、webpackによって解決されないライブラリの依存関係を指定できますが、出力の依存関係になります。これは、実行時に環境からインポートされることを意味します。