我在nodejs中编写了一个javascript应用程序并发现了一些奇怪的东西。 我正在将d3选择传递给函数(示例)
// mymodule.js
exports.myfunc = function(ele){
if(ele instanceof d3.selection){
// do something
} else {
// throw error
}
}
// main.js
mymodule = require('mymodule');
var ele = d3.select('#myElement');
mymodule.myfunc(ele);
在主要的js中,如果我说var d3 = require('d3')
if ele instanceof d3.selection
失败。但是,如果在main.sj中我需要'd3-selection'
,则测试通过。
require('d3')
和require('d3-selection')
之间的区别是什么?
我的package.json看起来像
{
...
"devDependencies":{
"d3":"^4.12.2"
}
}
答案 0 :(得分:0)
d3-selection是一组独立的D3微库。 (Read more)
if(ele instanceof d3.selection){
// do something
}
在上面的块中,您必须使用一些非常特定于D3微库的功能,因此当您导入d3时会抛出错误。
答案 1 :(得分:0)
from a import b
只是import a
的子节点模块。
d3-selection
是一个节点模块,它不是d3
的实例。这是条件如何失败。您无法从d3
实例
d3-selection
d3-selection
是另一个模块,是d3
的子模块。这就是为什么你可以使用d3-selection
的原因。
所以这些是相同的:
1:
d3
2:
d3.selection
答案 2 :(得分:0)
d3-selector是d3里面的微型库,也称为模块。为了使用d3包中的模块(如d3-selection),您必须在文档的末尾导入npm d3,您可以看到示例。
当你只使用必需的d3时,你不在d3选择模块中,这就是为什么你不能使用在d3选择d3 selection docs
中声明的任何函数的原因