我真的很纠结于奇怪的代码。为什么在我的webpack配置下需要javascript异步加载
我想在jQuery
ajax请求中包含$.ajaxPrefilter
的一些查询参数。 我发现下面的代码使它,如果它加载正确的同步顺序。 但是,在entry.js中的代码以不可预知的顺序加载了jscode。有时prefilter.js被预加载,另一次,post_ajaxs.js被预加载(我检查了服务器的post信息,有时缺少数据,我检查了使用时间加载铬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() }));
}
});