我试图用webpack加载jquery-mobile。但到目前为止还没有运气。
这是我的jpackery&的webpack.config代码jquery-mobile:
loaders: [
{
test: /jquery.mobile.js$/,
loader: "imports?define=>false,this=>window"
},
resolve: {
alias: {
"jquery": "jquery/src/jquery",
"jquery-mobile": "jquery-mobile/dist/jquery.mobile"
},
},
plugins: [
new webpack.ProvidePlugin({
$: "jquery",
jQuery: "jquery",
"window.jQuery": "jquery"
}),
]
这是jquery.mobile文件中的函数,它会导致麻烦:
(function ( root, doc, factory ) {
if ( typeof define === "function" && define.amd ) {
// AMD. Register as an anonymous module.
define( [ "jquery" ], function ( $ ) {
factory( $, root, doc );
return $.mobile;
});
} else {
// Browser globals
factory( root.jQuery, root, doc );
}
}( this, document, function ( jQuery, window, document, undefined ) {
(function( $ ) {
$.mobile = {};
}( jQuery ));
问题是root.jQuery未定义。在这个功能里面#34;这个" ===" window",当我使用imports-loader注入this =>窗口时,我检查了它。
另一个奇怪的时刻:如果我更换"这个"用"窗口"那样:
}( window, document, function ( jQuery, window, document, undefined ) {
一切都变好了。但我无法修改jquery.mobile文件,这可能会在将来造成麻烦。
非常感谢任何帮助,谢谢!
答案 0 :(得分:2)
以下需要imports-loader(npm install imports-loader --save
)
jQuery mobile希望this
成为全局上下文(window
):
require("imports?this=>window!jquery-mobile/dist/jquery.mobile.js");