Skip to content

Latest commit

 

History

History
68 lines (48 loc) · 1.7 KB

modules.md

File metadata and controls

68 lines (48 loc) · 1.7 KB

Modules

  • No ES6, foi especificado na própria linguagem, baseado no conceito de importação e exportação.
  // example.js
  class Circle {
    constructor(radius) {
      this.radius = radius;
    }

    get area() {
      return PI * pow(this.radius, 2);
    }
  }

  const circle = new Circle(10) // Circle { radius : 10 }

  circle.area; // 314.159.....
  • Por meio da palavra-chave export é possível exportar qualquer tipo de dado existente dentro de um módulo.
  // math.js
  export const PI = 3.141592;

  export function pow(base, exponential) {
    if(exponential === 0) return 1;
    return base * pow(base, exponential - 1); 
  }
  • A palavra-chav import faz a importação de qualquer tipo de dado expxortado para dentro do módulo.
  // example.js
  import {PI, pow} from './math'; // Unexpected token
  • CUIDADO!!! Para utilizar modules no Node.js os arquivos devem ter a extensão .mjs além de executar com a flag --experimental-modules.
  // math.js >> math.mjs
  // example.js >> example.mjs
  // node --experimental-modules example.mjs
  • É possível utilizar um alias na importação, renomeando o que estiver sendo importado.
  import {PI as pi, pow} from './math';
  • Por meio do * é possível importar tudo que estiver sendo exportado em um único objeto.
  import * as math from './math';

  math.x
  math.y
  • Também podemos importar e exportar de forma padrão utilizando a palavra-chave default.

  • A ordem da importação é relevante? Não, pois ele sofre hoisting e é pré-inicializado!

  • Não é permitido realizar import e export dentro de blocos! É necessário estar no top level.