我正面临使用Require Js
加载JQuery依赖脚本我正在使用Jquery插件,jQuery库和2个模块js
资产> js>供应商> jQuery库, 资产> js> apps.js,pageTop.js,categoryJS.js
我的apps.js:
require.config({
'baseUrl':'assets/js',
'paths':{
'jQuery':'vendor/jquery-1.11.2.min',
'viewportSize':'viewportSize-min',
'isoTopFilter':'isotope.pkgd.min',
'categoryJS' :'categoryJS'
},
shim:{
'jQuery': {
'exports':'$'
},
'viewportSize' :{
deps:['jQuery']
},
'isoTopFilter':{
deps:['jQuery']
},
'pageTop':{
deps:['jQuery']
},
'categoryJS':{
deps:['jQuery']
}
}
});//require.config
define(['jQuery','viewportSize','isoTopFilter','pageTop','categoryJS'], function($, pageTop, categoryJS) {
$(function() {
pageTop.alertProduct();
categoryJS.categorySlider();
});
});
和我的pageTop.js
define([],function( ){
return {
alertProduct: function(){
alert('I am module2');
return true;
}
}
});
我的categoryJs.js
define([],function( ){
return {
categorySlider: function(){
alert('I am module2');
return true;
}
}
});
脚本未加载,收到错误
Uncaught TypeError: Cannot read property 'alertProduct' of undefined
有人可以帮助我,我已经尝试了一切
答案 0 :(得分:1)
你有:
define(['jQuery','viewportSize','isoTopFilter','pageTop','categoryJS'],
function($, pageTop, categoryJS)
查看依赖项列表和参数列表。 pageTop
是第二个参数,因此它将获得viewportSize
模块的值。这里没有什么神奇之处:依赖项中列出的每个模块都是传递给回调,它的传递顺序与它在依赖项中的顺序相同。假设您不需要viewportSize
和isoTopFilter
的值,则可以执行此操作:
define(['jquery','pageTop','categoryJS','viewportSize','isoTopFilter'],
function($, pageTop, categoryJS)
另外,
jQuery调用define
,因此您无法为其设置shim
。 (很可能会被忽略。)您应该删除为其设置的shim
。
与您自己的模块相同。如果您调用define
并想要设置依赖项列表,请将依赖项传递给define
,不要为这些模块设置shim
。 shim
仅适用于未调用define
的代码。
jQuery将其模块名称硬编码为jquery
,因此您必须将其全称为jquery
。 (更多详情here。)更改您的paths
,以便jquery
代替jQuery
。