Angular 将cytoscape.js作为ESM模块导入
我在一个角度为10的应用程序中使用。cytoscape.js的文档说 在具有npm的ESM环境中使用Cytoscape.js(例如网页包或 带有ESM包的Node.js):Angular 将cytoscape.js作为ESM模块导入,angular,cytoscape.js,Angular,Cytoscape.js,我在一个角度为10的应用程序中使用。cytoscape.js的文档说 在具有npm的ESM环境中使用Cytoscape.js(例如网页包或 带有ESM包的Node.js):从“cytoscape”导入cytoscape 我像从“cytoscape”导入cytoscape一样导入它在我的打字脚本文件中 但我看到了警告 CommonJS或AMD依赖可能导致优化援助 因此,我转到node\u modules\cytoscape\dist文件夹。我看到有许多可导入的文件 我把console.log放在
从“cytoscape”导入cytoscape代码>
我像从“cytoscape”导入cytoscape一样导入它代码>在我的打字脚本文件中
但我看到了警告
CommonJS或AMD依赖可能导致优化援助
因此,我转到node\u modules\cytoscape\dist
文件夹。我看到有许多可导入的文件
我把console.log
放在他们每个人身上。然后我看到我正在使用cytoscape.cjs.js
,这意味着我正在使用commonjs文件
我可能会复制cytoscape.esm.min.js
并手动导入它,但有更好的方法吗?
最好从package.json
中跟踪我的所有依赖项。我刚才在谷歌上搜索了一下,发现还不支持typescript。所以我做了与您相同的导入,并将cytoscape添加到angular.json:projects.yourprojectname.architect.build.options.allowedCommonJSDependencies中,如下所示:
"allowedCommonJsDependencies": [
"cytoscape",
"cytoscape-popper",
"lodash",
"lodash/cloneDeep"
]
实际上,有typescript支持,但我想它不是官方的。此外,cytoscape.js的工作方式如下var cy=cytoscape({container:document.getElementById('cy')//要在}中呈现的容器)
因此它将所有功能集中在一个对象中,我认为即使我们将其作为ESM模块导入,也不会大大提高性能。如果cytoscape.js更加模块化,那么我们可以导入或不导入多个内容,这将提高性能。感谢您的回答。Typescript支持将有助于了解调用的结果以及所有的辅助对象(cytoscape集合、节点等)。我要看一看typedefs.typescript会让事情变得更容易理解嗯,当我安装这个时,我的从“cytoscape”导入cytoscape代码>中断。您可能必须使用“cytoscape/dist/cytoscape.esm.js”。无法在v3中更新项目的package.json中的“module”字段,因为它会破坏Web包。看见