0

我有一个使用传单的角度项目(Angular 13)。在 package.json 文件中,我有:

"leaflet": "^1.7.1",
"leaflet-draw": "^1.0.4",
"leaflet.heat": "^0.2.0",

在我的组件中,我通过

import * as L from 'leaflet';

一切正常,L 还包括来自 leaflet-draw 和 leaflet.heat 的类/方法。但是,当我只导入“传单”时,我无法理解它们是如何导入到项目中的。我知道传单插件不会导出任何东西,它们只会将他们的东西添加到传单的 L 名称中。

即使我只导入传单,我也只想了解传单插件如何可用。

4

1 回答 1

0

我猜这些插件在你的 package.json 中被列为依赖npm install项,所以会加载它们,因为它们是你的应用程序工作所必需的(应该是)。

然后插件可能不会导出任何东西,但它们确实扩展了Leaflet 类。例如 draw 插件扩展 Control 类如下:

代码
https://github.com/Leaflet/Leaflet.draw/blob/develop/src/Control.Draw.js

...
line 5: L.Control.Draw = L.Control.extend({
...

因此,您无需显式导入任何内容即可使用该功能。这是 Leaflet 建议实现插件的方式。他们在他们的文档中提到Class.extend,但这现在似乎也适用于L.Control(也适用于Handlerand Layer)。

参考
https://leafletjs.com/examples/extending/extending-1-classes.html
https://angular.io/guide/npm-packages#dependencies

于 2022-01-18T08:27:40.173 回答