只是为了好玩,我想使用jquery
加载require.js
。因此,我做了以下事情:
amd.js
define(["jquery-3.3.1"], function($) {
console.log(typeof $); // reports undefined
$("h1").html("Hello from AMD"); // causes TypeError (see below)
});
我的HTML文件非常简单,只有一个空白的<h1
>元素和通常的require.js
定义。
<script data-main = "amd" src = "require.js"></script>
此外,我的根文件夹(包含所有内容)也包含jquery-3.3.1.js
源文件。
您可能会看到整个示例代码here on my github repo。忽略所有文件,除了:
但是,当我访问页面时,无论是使用file:///
协议还是使用Web服务器,都不会加载该模块,并且会看到空白页面。
控制台为undefined
语句报告console.log
,并为第二个语句报告以下异常,该异常是我访问jQuery
对象/函数的结果,即从模块。
TypeError:$不是函数
我正在使用3.1.3版的jquery。如果您查看此jquery(及任何版本)的the source,众所周知jquery是一个函数对象。见下文:
来自jQuery源
define( [
...
], function( ..., ..., ... ) {
jQuery = function( selector, context ) {
return new jQuery.fn.init( selector, context );
},
return jQuery;
});