Javascript 为什么我的定义呼叫没有触发?
我正在使用Javascript 为什么我的定义呼叫没有触发?,javascript,jquery,requirejs,amd,requirejs-define,Javascript,Jquery,Requirejs,Amd,Requirejs Define,我正在使用requireJS并试图定义一个谷歌地图模块 我将此代码添加到HTML代码段的末尾: $(document).ready(function() { console.log("ready"); define(['async!http://maps.google.com/maps/api/js?v=3&sensor=false'], function (gmap) { console.log(gmap); }); }); “就绪”控制台正在记录,但d
requireJS
并试图定义一个谷歌地图模块
我将此代码添加到HTML代码段的末尾:
$(document).ready(function() {
console.log("ready");
define(['async!http://maps.google.com/maps/api/js?v=3&sensor=false'],
function (gmap) {
console.log(gmap);
});
});
“就绪”控制台正在记录,但define
调用未触发。如果我将其替换为require
调用,则文件正在加载,但I gmap未定义
问题:为什么我的
define
呼叫没有触发 这是因为一旦定义了一个模块,就需要它。将您的代码更改为类似以下内容将有效:
// gmap.js (for example)
define(['async!http://maps.google.com/maps/api/js?v=3&sensor=false'], function(gmap) {
// Do some stuff
return gmap;
});
// main.js
require(['jquery', 'path/to/gmap'], function($, gmap) {
$(function() {
console.log(gmap);
});
});
需要注意的一些事项:
- 定义的模块应存在于单个文件中。通过阅读了解它们是如何工作的
- 避免在DOM就绪回调中需要模块,这意味着您必须等待更长的时间才能请求模块。最好立即开始请求它们,稍后检查DOM是否准备就绪。RequireJS就是为了这个
- 确保
需要
jQuery作为一个模块(除非您不是这样使用它)
- 将匿名函数传递给
是$()
$(document.ready()