В настоящее время я тестирую покрытие ES2015 в Safari Developer Preview (который утверждает, что поддерживает 100% ES2015, включая модули).Импорт модуля ES2015 в Safari DP требует расширения файла
Я провел простой тест, используя тот же синтаксис, который я регулярно использовал при разработке кода ES2015 (наряду с Babel.JS для пересылки и Browserify для комплектации).
Неожиданно мой код не будет работать без включения расширения .js
в операторе импорта. Это стандартное поведение? Я думал, ты можешь это пропустить.
/* filename: scripts/alert.js */
export default class Alert {
constructor(message) {
this.message = message;
}
show() {
alert(this.message);
}
}
// Another file
/* filename: scripts/index.js */
import Alert from "./alert.js"; // this won't work if I change it to 'import Alert from "./alert";'
(new Alert("Hello, World!")).show();
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>ES2015 Modules</title>
</head>
<body>
<h1>ES2015 Modules</h1>
<script async="async" type="module" src"scripts/index.js">
</script>
</body>
</html>
* ModuleSpecifier * используется средой для загрузки модуля. Это не то, о чем говорит язык, поэтому среда может или не требует расширения '.js'. – CodingIntrigue
Я этого не знал. Я думаю, мне придется всегда ставить расширение '.js' просто, чтобы быть уверенным, как хорошая практика во время разработки (даже с транспиляцией и комплектом) – Zorgatone