2016-04-19 4 views
0

私はES6クラス(およびairbnb設定のESLint)でReactプロジェクトを開始しています。バンドルするにはwebpackが必要です。Webpackが外部にロードします。

私はReact tutorialで始まり、const React = require('react');const $ = require('jquery');を使ってみましたが、バンドルが15kbから700kbに​​増えたことに気付きました。私はjquery,reactreact-dom<script/>タグで含めることにしました。

Hash: 082980fb232d17977e55 
Version: webpack 1.13.0 
Time: 869ms 
    Asset  Size Chunks    Chunk Names 
bundle.js 13.3 kB  0 [emitted] app 
    + 5 hidden modules 

しかし、私はconst React = require('react');を削除するとき、私は私のコードでエラーが発生します(例えば:リアクトJSXを使用するときにスコープ内になければなりません - 反応・イン・JSX-スコープ/反応)。 Iその後、Webpack's externalsに関するいくつかのドキュメントを読んで、これをやってみました:

module.exports = { 
    entry: { 
    app: './main.js', 
    }, 
    output: { 
    filename: 'bundle.js', 
    }, 
    externals: { 
    jquery: 'jQuery', 
    $: '$', 
    React: 'React', 
    ReactDOM: 'ReactDOM', 
    marked: 'marked', 
    }, 
    module: { 
    loaders: [ 
     { 
     test: /\.js$/, 
     loader: 'babel-loader', 
     }, 
    ], 
    }, 
}; 

しかし、私はherehereそれがいけないを読んで、一方のWebPACKは、とにかく彼らがバンドルされています。

Hash: 6438094053346ce42228 
Version: webpack 1.13.0 
Time: 4975ms 
    Asset Size Chunks    Chunk Names 
bundle.js 709 kB  0 [emitted] app 
    + 172 hidden modules 

何が欠けていますか?

ありがとうございます!

+0

「反応」を「反応」に、「反応」を「反応 - 反応」に変えて自分自身で考え出しました。 – Zephir77167

答えて

0

webpackのCommonsChunkPluginを使用すると、すべての依存関係を別々のバンドルにバンドルできます。通常はすべての依存関係が必要です。

+0

こんにちは、この回答をありがとう、私もこれを試して、私は "libs.js"も私のhtmlで読み込まなければならない、それはまだ実行するために同じ時間がかかります...私はjqueryをしないと反応したい。 – Zephir77167

+0

複数の独立した依存関係をロードするのに時間がかかり、1つの依存関係バンドルが必要です。あなたはキャッシングについて心配していますか? –

+0

はい、実際には、反応、反応dom、およびjqueryをリンクから読み込んでいると推測していました(たとえば、')は、すべてのWebサイトに存在するため、ファイルがユーザーによってキャッシュされるため、ファイルをバンドルすると少なくとも1回(ユーザーのWebサイトでは初めて)ファイルをロードすることになります。私が間違っている? – Zephir77167

関連する問題