Javascript 浏览器支持模块导入,如何使用?
我试图弄清楚为什么我的脚本标记在html文件中不起作用,我看到一篇文章说,可以通过带有Javascript 浏览器支持模块导入,如何使用?,javascript,node.js,npm,Javascript,Node.js,Npm,我试图弄清楚为什么我的脚本标记在html文件中不起作用,我看到一篇文章说,可以通过带有module类型的脚本标记将模块导入浏览器。直接从本网站: example.js文件 我希望这是有意义的,但我真的想理解为什么我不能只需要或导入JS文件中的内容,然后通过脚本将其添加到html中。我一直在使用webpack将所有内容打包并放入我的html中。但是我现在正在制作一个npm包,我听说人们不喜欢预先打包的包,所以我试图找到一种方法,让用户在html中使用我的模块,而不必安装webpack或类似的东西。
module
类型的脚本标记将模块导入浏览器。直接从本网站:
example.js文件
我希望这是有意义的,但我真的想理解为什么我不能只需要或导入JS文件中的内容,然后通过脚本将其添加到html中。我一直在使用webpack将所有内容打包并放入我的html中。但是我现在正在制作一个npm包,我听说人们不喜欢预先打包的包,所以我试图找到一种方法,让用户在html中使用我的模块,而不必安装webpack或类似的东西。在
中声明的变量是本地变量单元将example.js
作为一个模块,从那里导入类,您可以使用它们:
HTML
在
中声明的变量是该模块的本地变量。将example.js
作为一个模块,从那里导入类,您可以使用它们:
HTML
每个模块都在其自己的作用域中求值,而不是在全局作用域中求值。每个模块都在其自己的作用域中求值,而不是在全局作用域中求值。噢,哇,这太奇怪了,我习惯了不必将文件扩展名添加到路径中。通常在节点中,我不必这样做。我以为香草也一样。它现在可以工作了,谢谢@auxtacode可以对实际文件名做出有根据的猜测;浏览器不能。您可以从PHP脚本的输出导入
”https://static.example.com/ill_advised_dynamic_script?call_a_brick_a=brick“
。我的观点是浏览器不能假设”/brickbreakclasses“
实际上意味着“向发出请求”http://example.com/brickbreakclasses.js
”哦,哇,这太奇怪了。我已经习惯了不必在路径中添加文件扩展名。通常在节点中,我不必这样做。我以为香草也一样。它现在可以工作了,谢谢@auxtacode可以对实际文件名做出有根据的猜测;浏览器不能。您可以从PHP脚本的输出导入”https://static.example.com/ill_advised_dynamic_script?call_a_brick_a=brick“
。我的观点是浏览器不能假设”/brickbreakclasses“
实际上意味着“向发出请求”http://example.com/brickbreakclasses.js
”。
<script type="module" src="./main.js"></script>
// or
<script type="module">
import { something } from './somewhere.js';
// ...
</script>
//HTML
<body>
<script type="module">
import { World, Ball, Paddle, Brick, Hud} from "./brickbreakclasses.js"
</script>
<script src="example.js"></script>
</body>
// 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)
<body>
<script type="module" src="example.js"></script>
</body>
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);