【发布时间】:2018-10-18 10:43:37
【问题描述】:
只是为了好玩,我想使用require.js 加载jquery。所以,我做了以下:
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。忽略所有文件,除了:
- amd.html
- amd.js
- jquery-3.3.1.js
- require.js
但是,当我访问该页面时,无论是使用file:/// 协议还是使用网络服务器,模块都没有加载,我看到一个空白页面。
控制台为console.log 语句报告undefined,并为我访问jQuery 对象/函数的第二个语句报告以下异常,这是从模块返回的内容。
TypeError: $ 不是函数
我正在使用 jquery 版本 3.3.1。如果您查看此(和任何)jquery 版本的the source,则众所周知,jquery 是一个函数对象。见下文:
来自 jQuery 源代码
define( [
...
], function( ..., ..., ... ) {
jQuery = function( selector, context ) {
return new jQuery.fn.init( selector, context );
},
return jQuery;
});
【问题讨论】:
标签: javascript requirejs amd