браузеры поддерживают импорт модулей, как мне его использовать? - PullRequest
0 голосов
/ 20 октября 2018

Я пытаюсь выяснить, почему мои теги скрипта не работают в моем html-файле, и я наткнулся на статью, в которой говорится, что вы можете импортировать модули в браузеры через тег скрипта с типом модуля.непосредственно с этого сайта: 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 через скрипт.Я использовал веб-пакет, чтобы связать все и поместить его в свой html. Однако сейчас я делаю пакет npm и слышу, что людям не нравятся предварительно упакованные пакеты, поэтому я пытаюсь найти способ для пользователя использовать моймодули в HTML без необходимости установки веб-пакета или чего-то подобного.

1 Ответ

0 голосов
/ 20 октября 2018

Переменные, объявленные внутри <script type="module">, являются локальными для этого модуля.Сделайте example.js модулем, импортируйте оттуда классы, и вы сможете использовать их:

HTML

<body>
  <script type="module" src="example.js"></script>
</body>

example.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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...