如何在模块中调用 javascript 函数

How to call javascript function in module

我收到 generateChart 的 Uncaught ReferenceError。

我在 Chart.js 中定义了 generateChart,它在 require.config.js 中被引用。

我是 javascript 的新手,所以这是一个新手问题。

这是我的代码:

主要html文件:

<!DOCTYPE html>
<html>
<meta charset="utf-8">

<body>

<p id="example">

<script src="js/require.config.js"></script>
<script data-main="js/config.js" src="js/lib/require.js"></script>


</body>

require.config.js

var require = {
    paths: {
        'd3': 'lib/d3',
        'Chart' : 'Chart'
    }
};

config.js 其中包含主要入口点和对 generateChart

的未引用调用

define([
    'd3',
    'Chart'
], function (d3, Chart) {
    'use strict';


 d3.csv("sp500.csv", function(data) {

   d3.select("#example")
       .datum(data)
     .call(generateChart());
 });

});

和 Chart.js 我定义 generateChart

define([
    'd3'
], function (d3) {
    'use strict';

    generateChart = function() {
    };

 });

我不是 require.js 用户,但看起来依赖项已传递到您在 define 中指定的函数中。 这样下面代码中的第二个参数应该代表 Chart 模块,你需要用它来调用 generateChart:

define([
    'd3',
    'Chart'
], function (d3, Chart) {    /// Second parameter is 'Chart'
    'use strict';


    d3.csv("sp500.csv", function(data) {

    d3.select("#example")
        .datum(data)
        .call(Chart.generateChart());   /// use it here to call generateChart()
    });

});

第二个问题是 Chart.js 应该 return 一个对象而不仅仅是定义一个函数:

define([
    'd3'
], function (d3) {
    'use strict';

    return {
        generateChart: function() {
           alert('here');
        }
    }

 });