如何在全局范围内使用ES6模块而不是命名空间?

时间:2016-01-04 14:43:23

标签: javascript oop ecmascript-6

在ES6中定义类时,它在全局范围内可用,您可以使用新的ES6支架机箱阻止它:

var myCar = new MYNAMESPACE.Car();

我有多个js文件,每个文件都有自己的类定义,我在全球范围内通过MYNAMESPACE使这些类可用。 因此,从任何地方创建一辆新车看起来像:

import numpy as np
import cv2

cap = cv2.VideoCapture(0)

# Define the codec and create VidwoWriter object
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('output.avi',fourcc,20.0,(640,480))

while(cap.isOpened()):
    ret, frame = cap.read()
    if ret == cv2.flip(frame,0):

        # Write the flipped frame
        out.write(frame)

        cv2.imshow('frame',frame)
        if cv2.waitKey(1) == ord('q'):
            break
    else:
        break;

cap.release()
out.release()
cv2.destroyAllWindows ()

我如何使用ES6模块?这是可能的,还是值得推荐的?

1 个答案:

答案 0 :(得分:9)

您应该使用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模块语法
  1. http://www.2ality.com/2014/09/es6-modules-final.html
  2. MDN: