, , , . , :
. , , jQuery jQueryUI. , , jQuery. , , .
jQuery AMD. AMD define, , . , jQuery $ jQuery .
, , jQuery: , jQuery $ jQuery , :
jQuery.getScript('https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js', function () {
jQueryWidget = jQuery.noConflict(true);
setHandlers(jQueryWidget);
});
, jQuery , . , .getScript, - script, script, .getScript, callback. script, .getScript, script, RequireJS, .
, -, - , . , , RequireJS . RequireJS . , , context RequireJS . , , jQuery $ jQuery, jQuery, . , .
, , , . , , , , , , , , , . , : , , .
, , , , . ( , , ...). jQuery jQuery UI script. , define, , define. , , , RequireJS , jQuery script, define. ( jQuery, .)
, , , , - Webpack , define , , define. (. import-loader, .) , , , $ jQuery jQuery, .
, , Webpack, , (, IIFE , ). , , :
npm install webpack jquery jquery-ui imports-loader lite-server./node_modules/.bin/webpack./node_modules/.bin/lite-server
- , , . noConflict, Webpack, , Webpack, jQuery CommonJS DOM noGlobal, .
webpack.conf.js:
const webpack = require('webpack');
module.exports = {
entry: {
main: "./widget.js",
"main.min": "./widget.js",
},
module: {
rules: [{
test: /widget\.js$/,
loader: "imports-loader?define=>false",
}],
},
devtool: "source-map",
output: {
path: __dirname + "/build",
filename: "[name].js",
sourceMapFilename: "[name].map.js",
},
plugins: [
new webpack.optimize.UglifyJsPlugin({
sourceMap: true,
include: /\.min\.js$/,
}),
],
};
widget.js:
var $ = require("jquery");
require("jquery-ui/ui/widgets/datepicker");
var css_link = $("<link>", {
rel: "stylesheet",
type: "text/css",
href: "https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/base/jquery-ui.css"
});
css_link.appendTo("head");
$(document).ready(function() {
console.log("jQuery compare (we want this false)", $ === window.$);
console.log("jQuery version in widget", $.fn.jquery);
console.log("jQuery UI version in widget", $.ui.version);
$("#end-date").datepicker();
});
index.html:
<!DOCTYPE html>
<html>
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.5/require.js"></script>
<script>
require.config({
paths: {
jquery: "https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.0/jquery.min",
"jquery-ui": "https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.11.0/jquery-ui"
}
});
require(["jquery", "jquery-ui"], function(myJQuery) {
console.log("jQuery compare (we want this true)", myJQuery === $);
console.log("jQuery version main", $.fn.jquery);
console.log("jQuery ui version main", $.ui.version);
})
</script>
</head>
<body>
<input id="end-date">
<script src="build/main.min.js"></script>
</body>
</html>