javascript - 浏览器支持模块导入,我该如何使用它?
问题描述
我试图弄清楚为什么我的脚本标签在我的 html 文件中不起作用,我遇到了一篇文章,说您可以通过带有类型的脚本标签将模块module
导入浏览器。直接来自该站点:https ://www.sitepoint.com/understanding-es6-modules/
<script type="module" src="./main.js"></script>
// or
<script type="module">
import { something } from './somewhere.js';
// ...
</script>
所以然后我尝试了它并且导入的模块被识别但是得到这个错误Can't find variable World
是因为我的example.js文件在它的范围内没有它吗?我不明白它们“处理”的顺序?不知道术语对不起。
我在下面的尝试
//HTML
<body>
<script type="module">
import { World, Ball, Paddle, Brick, Hud} from "./brickbreakclasses.js"
</script>
<script src="example.js"></script>
</body>
example.js文件
// commented this part out because it was imported in html file
// import { World, Ball, Paddle, Brick, Hud } from "./brickbreakclasses";
var canvas = new World(document.getElementById("canvas") );
var ball = new Ball(canvas)
var brick = new Brick(canvas)
var hud = new Hud(canvas)
var paddle = new Paddle(canvas)
我希望这是有道理的,但我真的很想了解为什么我不能只要求或导入 JS 文件中的某些内容并通过脚本将其添加到 html 中。我一直在使用 webpack 捆绑所有内容并将其放入我的 html 中。但是我现在正在制作一个 npm 包,我听说人们不喜欢预先捆绑的包,所以我试图为用户找到一种方法在 html 中使用我的模块,而无需安装 webpack 或类似的东西。
解决方案
在 a 中声明的变量<script type="module">
是该模块的本地变量。制作example.js
一个模块,从那里导入类,然后你就可以使用它们了:
HTML
<body>
<script type="module" src="example.js"></script>
</body>
例子.js
import { World, Ball, Paddle, Brick, Hud } from "./brickbreakclasses.js";
var canvas = new World(document.getElementById("canvas") );
var ball = new Ball(canvas);
var brick = new Brick(canvas);
var hud = new Hud(canvas);
var paddle = new Paddle(canvas);
推荐阅读
- javascript - 有没有办法测试私有方法?
- image - 如何使用 ADNI 数据集将 ImageDataGenerator 与 nii/NIFTI 文件一起使用
- c++ - Unicode 字符显示为十进制数字而不是符号,我该如何解决这个问题?
- javascript - 在 mousemove 上制作多个工具提示
- excel - 使用带有多个条件的 Case 语句连接
- office-js - 如何将脚本实验室示例转换为 Visual Studio 2019 社区项目
- wordpress - 如何使用 PHP 在 WordPress 后端保存元数据
- firebase - 两个 Google Firebase 托管应用需要共享一个 RTDB 数据库
- javascript - 将创建的 div 保存到数据库
- angularjs - 为什么我不能在 angularjs 中要求 ngSubmit