如何将一个巨大的js文件放在一堆“定义”中,如何从其他文件中调用各种“定义”函数?
我一直在复制这些例子,但仍无法让它发挥作用:
这是我到目前为止所做的:
main.js
require.config({
baseUrl: '',
paths: {
jquery: '../libraries/jquery-1.10.2.min',
simControlView: '../javascripts/simControlView'
}
});
require(['jquery','loadPage'], function( $,loadPage)
{
loadPage();
});
define('loadPage', ['jquery'], function($)
{
var simControlView = require(['./simControlView']);
return function()
{
simControlView.showSimControlView(); //having problem here
};
});
simControlView.js
define(['jquery'], function ($) {
return {
showSimControlView: function () {
console.log("Hi!!");
}
}
});
这是我得到的错误:
未捕获的TypeError :对象函数d(e,c,h){var G,K; f.enableBuildCallback&安培;及(C&安培;&安培; H(c)中)及;&安培;(C .__ requireJsBuild!= 0);如果( “串” === typeof运算 e){if(H(c))返回v(A(“requireargs”,“无效的要求 致电“),h); if(a&& s(N,e))返回Ne; if(j.get)返回 j.get(I,E,A,d); G = N(E,A,1,0!); G = g.id;!?返回S(R,G)V(A( “notloaded” '的模块 名称“'+ g +'”尚未加载上下文:'+ b +(a?“”:“。使用 要求([])“))):R [G]} K(); i.nextTick(函数(){K(); K = Q(N(NULL,一)); k.skipMap = f.skipMap; k.init(E,C,H,{启用:0}); C()});返回 d} 没有方法'showSimControlView'
看到我做错了什么?任何帮助表示赞赏!
答案 0 :(得分:3)
尝试将所有依赖项移至您传递给define()
的依赖项列表。
此外,订购可能很重要。即模块的define()
可能需要在需要它的require()
之前(谈论'loadPage'
模块)。
此外,如果您的paths
配置调用模块'simControlView'
,则需要将其称为'simControlView'
,而不是'./simControlView'
。
E.g:
define('loadPage', ['jquery', 'simControlView'], function($, simControlView) {
return function() {
simControlView.showSimControlView();
};
});
require(['jquery', 'loadPage'], function($, loadPage) {
loadPage();
});