2016-08-21 7 views
0

グローバルにご利用いただけるのはjqueryです。.js/uploader.jsは、ご要望に応じて/loginと評価されています。これは私がしようとするものである:Webpackコードの分割が期待どおりに機能しないのはなぜですか?

index.js

require("./css/main.scss") 
$ = require("jquery") 
require.ensure(["./js/uploader"], function(require) { 
    if (window.location.pathname=='/login') { 
     var uploader = require("./js/uploader") 
    } 
}); 

webpack.config.js:

module.exports = { 
    entry: "./index.js", 
    output: { 
     path: '../wdksw/static/js', 
     publicPath: 'static/js/', 
     filename: "bundle.js", 
    }, 
    module: { 
     loaders: [ 
      { test: /\.css$/, loader: "style!css" }, 
      { test: /\.scss$/, loaders: ["style", "css", "sass"]}, 
     ], 

    } 
}; 

HTML:

<script type="text/javascript" src="/static/js/bundle.js"></script> 

しかし、私はある要求を行いますブラウザでは/loginではない1.bundle.jsも要求されています、これは私がしたいものではありません。では、私はどうしたらいいですか?何か不足していますか?

答えて

1

require.ensureif文でなければなりませんあなた:

if (window.location.pathname == '/login') { 
    require.ensure(["./js/uploader"], function(require) { 
     var uploader = require("./js/uploader") 
    }); 
} 

今、あなたのバンドルがif文でのみ一致を条件に、あなたの頭に追加されます。

+0

私はあなたと同じアイデアを思いつきます。できます。私はちょうどそれがstandartの方法か、これのためのいくつかのプランジンがあるのだろうか? – tcpiper

+0

'require.ensure'のような動的なインポートコードはまだ進化しています。 webpack2から 'System.import'を見てください。あなたのユースケースはうまくいくように見えます.Webackが与えることができるプラグイン以上のものは必要ありません。 – Everettss

関連する問題