Как использовать модули ES6 вместо пространств имен в глобальном масштабе?
При определении класса в ES6 он становится доступным в глобальной области видимости, которую вы можете предотвратить с помощью нового кронштейна ES6:
{
class Car {
constructor(make) {
this.make = make;
this.currentSpeed = 25;
}
getSpeed(){
console.log(this.make + ' is going ' + this.currentSpeed + ' mph.');
}
}
window.MYNAMESPACE.Car = Car;
}
У меня есть несколько js-файлов, каждый со своим определением класса, и я делаю классы доступными через MYNAMESPACE в глобальной области видимости. Итак, создание нового автомобиля из любой точки мира выглядит так:
var myCar = new MYNAMESPACE.Car();
Как я могу использовать модули ES6 для этого? Это вообще возможно или рекомендуется?
1 ответ
Решение
Вы должны использовать экспорт и импорт ES6 вместо того, чтобы делать классы доступными в глобальной области видимости.
// car.js
class Car {
constructor(make) {
this.make = make;
this.currentSpeed = 25;
}
getSpeed(){
console.log(this.make + ' is going ' + this.currentSpeed + ' mph.');
}
}
export default Car;
// foo.js
import Car from "./car"
var car = new Car("ford");
car.getSpeed();
Читайте о синтаксисе модуля es6 от