arrow_back Voltar ao curso

traz-ai / manda-ai — Módulos

Fundamentos do XanaScript • Aula 17 de 20

Código grande em um arquivo só fica impossível de manter. Módulos dividem o programa em arquivos, cada um com uma responsabilidade.

manda-ai (export)

Num arquivo math.xs, exporte o que outros arquivos podem usar:

js
// math.xs
manda-ai soma

resolve soma(a, b) {
  volta a + b
}

traz-ai (import)

Num main.xs, importe e use:

js
// main.xs
traz-ai "./math.xs" as matematica
grita-ae(matematica.soma(2, 3))  // 5

Por que dividir em módulos?

  1. Responsabilidade única — cada arquivo faz uma coisa.
  2. Reuso — o mesmo math.xs serve pra N programas.
  3. Isolamento — erros ficam contidos; você sabe onde procurar.

Import como expressão

js
cria mod = traz-ai "./mod_aux.xs"

Biblioteca padrão

A linguagem já vem com módulos prontos:

js
traz-ai "string" as str
traz-ai "math" as M

grita-ae(str.maiuscula("olá"))   // OLÁ
grita-ae(M.soma(2, 3))            // 5

Módulo string: maiuscula, minuscula, aparada, começa-com, termina-com, tem, troca, invertida, repete, primeira-maiuscula, fatia.

Módulo math: soma, sub, mul, div, mod, abs, max, min, clamp.

Por que existem módulos na biblioteca padrão?

Você não precisa reinventar o que todo mundo usa. str.maiuscula existe porque toda aplicação manipula texto — separar essas utilidades em módulos mantém a linguagem enxuta e as funções organizadas.

Módulos Node.js

Qualquer pacote npm disponível também funciona:

js
traz-ai "axios" as http

Import cíclico é detectado

Se A importa B e B importa A, a linguagem detecta o ciclo e retorna erro de compilação em vez de travar — uma proteção automática contra um dos erros mais confusos de módulos.

Comentários