我有一个简单的案例,我认为它遵循RequestJS文档中的说明:http://requirejs.org/docs/api.html#circular但是,它似乎不起作用。我把我的文件放在下面,并在dropbox中输入一个zip文件:https://www.dropbox.com/s/5h7hlj281cddh5t/program_version_2.zip?dl=0有人可以告诉我发生了什么事吗?
index.html:
<!doctype html>
<html>
<head>
<script data-main="js/app" src="js/require.js" type="text/javascript"></script>
</head>
<body>
Loaded.
</body>
</html>
app.js:
requirejs.config({
paths: {
'module1': 'module1',
'module2': 'module2'
}
});
requirejs(['main'], function(main) {
main.start();
});
main.js:
define(['module1'], function (module1) {
var start = function() {
console.log('In main.js. Before initializeValues.');
module1.doOperation();
}
return {
start: start
};
});
module1.js:
define(['require', 'module2'],
function (require, module2) {
var doOperation = function() {
console.log('Start of doOperation function');
require('module2').someFunc();
};
var anotherFunc = function() {
console.log('In anotherFunc.');
};
return {
doOperation: doOperation,
anotherFunc: anotherFunc
};
});
module2.js:
require(['require', 'module1'], function(require, module1) {
var someFunc = function() {
console.log('In someFunc.');
require('module1').anotherFunc();
};
return {
someFunc: someFunc
};
});
require.js:
/** vim: et:ts=4:sw=4:sts=4
* @license RequireJS 2.0.4 Copyright (c) 2010-2012, The Dojo Foundation All Rights Reserved.
* Available via the MIT or new BSD license.
* see: http://github.com/jrburke/requirejs for details
*/
/*jslint regexp: true, nomen: true */
/*global window, navigator, document, importScripts, jQuery, setTimeout, opera */
var requirejs, require, define;
(function (global) {
'use strict';
var version = '2.0.4',
commentRegExp = /(\/\*([\s\S]*?)\*\/|([^:]|^)\/\/(.*)$)/mg,
cjsRequireRegExp = /[^.]\s*require\s*\(\s*["']([^'"\s]+)["']\s*\)/g,
jsSuffixRegExp = /\.js$/,
: :
我在控制台中收到消息:未捕获TypeError:无法读取属性&#39; someFunc&#39;未定义的。 。 。 。 module1.js:7
当我感觉不到RequireJS正在做什么时,我们很难向前迈进。有人会光明吗?
答案 0 :(得分:1)
在module2.js
中你有:
require(['require', 'module1'], function(require, module1) {
您想使用:
define(['require', 'module1'], function(require, module1) {
您需要使用define
来定义模块。