gpt4 book ai didi

javascript - 使用 RequireJS 加载 plotly 和 D3

转载 作者:行者123 更新时间:2023-11-29 14:45:32 25 4
gpt4 key购买 nike

我正在尝试使用 RequireJS 在我的 js 代码中加载 plotly 和 d3 库。我试过这个:

require.config({
paths: {
d3: '/static/scripts/plotly/dependencies/d3.v3.min',
plotly: '/static/scripts/plotly/plotly.min'
}
});
require(['d3'], function(d3) {
d3();
});
require(['plotly'], function(plotly) {
plotly();
});

但这行不通。当我的 js 函数被调用时,我得到:

Uncaught ReferenceError: plotly is not defined
Uncaught ReferenceError: Plotly is not defined
Uncaught ReferenceError: d3 is not defined
Uncaught TypeError: d3 is not a function

在这种情况下使用 RequireJS 的正确方法是什么?

正在使用当前版本的代码更新帖子,但仍然无法正常工作。

在调用脚本中我现在有这个:

require.config({
paths: {
heatmap: '/static/scripts/heatmap',
d3: '/static/scripts/plotly/dependencies/d3.v3.min',
plotly: '/static/scripts/plotly/plotly.min',
}
});
require(['d3', 'plotly', 'heatmap'], function(d3, plotly, heatmap) {
generate_heatmap();
});

它失败了:

Uncaught ReferenceError: Plotly is not defined(anonymous function) @ plotly.min.js:17

函数 Plotly(大写 P)在 plotly.min.js 中定义。我是否必须在某处添加对该函数的引用?

最佳答案

Plotly 需要一个 shim,因为它依赖于 D3,而且根据 Plotly 文档,看起来还需要 jQuery。您的配置应如下所示:

/*
main.js file
*/
require.config({
paths: {
d3: '/static/scripts/plotly/dependencies/d3.v3.min',
jquery: '/path/to/jquery',
plotly: '/static/scripts/plotly/plotly.min'
},

shim: {
plotly: {
deps: ['d3', 'jquery'],
exports: 'plotly'
}
}
});

require(['d3', 'plotly'], function(d3, plotly) {
console.log(plotly); // Object {Lib: Object, util: Object...}
console.log(d3); // Object {version: "3.5.6", behavior: Object...}
});

在您的 index.html 中,您应该只有一个脚本标签:

<script data-main="main" src="/path/to/require/folder/require.js"></script>

如果你想在另一个使用 require 的 JS 文件中使用 D3 和 Plotly,那么你应该使用 AMD 风格:

/*
foo-bar.js
*/
define(['d3', 'plotly'], function(d3, plotly) {
var foo = {};

function bar() {
// Some code here...
}

// This will allow other modules to use
// the foo object and the bar function.
return fooBar {
foo: foo,
bar: bar
}
});

现在,您可以在另一个模块中使用 foo-bar.js(假设这两个文件在同一目录级别):

define(['./foo-bar'], function(fooBar) {
console.log(fooBar.foo) // Object
console.log(fooBar.bar) // function() {}
});

关于javascript - 使用 RequireJS 加载 plotly 和 D3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33436184/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com