为什么要在我的webpack配置下进行javascript异步加载

时间:2016-12-05 06:15:19

标签: javascript jquery ajax webpack

我真的在与奇数代码挣扎。

我想在所有$.ajaxPrefilter ajax请求中按jQuery添加一些查询参数。 我在下面找到了代码,如果它正确加载同步顺序。 但是,跟随entry.js中的代码以不可预测的顺序加载jscode。有时prefilter.js被预加载,另一次,post_ajaxs.js被预加载。(我检查了服务器发布消息,有时缺少数据,我检查了使用chrome的时序加载devtools)。

require(['prefilter'])

$(function(){
    if($("#page_id").length > 0) {
        require([
             "src/common/post_ajax.js"
        ]);
    }
});

为什么会造成这种情况?我很困惑,因为我首先想到require关键字是同步加载。 我显示了webpack.config.js的部分片段可能是相关的。

entry: {
 /webroot/js/entry.js: __dirname+"/src/entry.js"
},
resolve: {
  alias: {
    "prefilter": __dirname + "/src/common/prefilter.js",
  }
},
output: {
    path: __dirname + "/webroot/js/",
    filename: "[name].js",
    chunkFilename: "[hash].[id].js?" + (+new Date()),
    publicPath: "/js/"
},
plugins: [
        new webpack.optimize.DedupePlugin(),
        new webpack.optimize.OccurrenceOrderPlugin(),
        new webpack.optimize.AggressiveMergingPlugin(),
        new webpack.ProvidePlugin({
            $: "jquery",
            jQuery: "jquery",
            "window.jQuery": "jquery",
            d3: "d3"
        })
    ]

我想强制prefilter.js预加载并在其后加载post_ajax。请给我帮助。我会很感激。

修改 这是prefilter.js。

 $.ajaxPrefilter(function (options, originalOptions, jqXHR) {
        options.data = $.param($.extend(originalOptions.data, {'data[extra]':$("#some_id").val() }));
    }
});

0 个答案:

没有答案