嗨,如果这是一个愚蠢的问题,很抱歉,但我在任何地方都找不到答案。
我有一个在画布上绘制的js文件,我刚刚从中删除了一个函数,因为我想在另一个js文件中使用它。然后,我将getPosition函数导入drawBalls.js文件,如下所示:
import {getPosition} from "../Useful_Scripts/divPosition.js";
这似乎还可以(因为它没有给我任何错误(。然而,就在下面,我有一个函数绘制,它开始时是这样的:
function draw(canvas){
const maxRadius = 10;
const minRadius = 5;
etc;
如果声明了错误"draw",但从未读取其值,则该方法不再有效。不过,如果我删除导入代码并将getPosition函数粘贴到drawBalls.js中,并删除type="模块";来自script标记。
我在我的html文件中有这个,我试图在画布上绘制:
<script type="module" src="../Scripts/Project_1/drawBalls.js"></script>
<script>
window.addEventListener('load', (event) => {
draw(canvas1);
});
</script>
有人能解释一下为什么一旦文件变成模块,它就不再工作了吗?
更新我已将html文件更改为
<script type="module" >
import {draw} from "../Scripts/Project_1/drawBalls.js"
window.addEventListener('load', (event) => {
draw(canvas1);
});
这很管用!
模块的默认作用域是该模块,而不是全局作用域。
draw
方法仅存在于该模块内部。
任一:
- 将
addEventListener
代码放入drawBalls.js
export
,draw
函数,然后import
将其加载到另一个脚本中,而不是用<script>
元素加载drawBall.js
您也可以显式地将draw
指定为window
的属性,但这是一个肮脏的破解,我不建议这样做。
您将drawBalls.js包含为一个模块,但不从您的模块导出draw函数——德皮尔舍
您将脚本用作模块。假设你正在制作一个NPMjs包,然后构建index.js。你会如何要求和使用这个模块?
在需要你的包之前,在index.js中,你需要导出它来导入/包含它。
这是module.exports
:的基本语法
drawBalls.js
module.exports = draw;
EDIT:上面的代码是针对CommonJS模块的。使用export
(就像使用import
一样(:
export draw;