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:
// math.xs
manda-ai soma
resolve soma(a, b) {
volta a + b
}traz-ai (import)
Num main.xs, importe e use:
// main.xs
traz-ai "./math.xs" as matematica
grita-ae(matematica.soma(2, 3)) // 5Por que dividir em módulos?
- Responsabilidade única — cada arquivo faz uma coisa.
- Reuso — o mesmo
math.xsserve pra N programas. - Isolamento — erros ficam contidos; você sabe onde procurar.
Import como expressão
cria mod = traz-ai "./mod_aux.xs"Biblioteca padrão
A linguagem já vem com módulos prontos:
traz-ai "string" as str
traz-ai "math" as M
grita-ae(str.maiuscula("olá")) // OLÁ
grita-ae(M.soma(2, 3)) // 5Mó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:
traz-ai "axios" as httpImport 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.