Importações Modulares
Importações tree-shakeable para otimizar o tamanho do bundle
Importações Modulares 📦
O AzuraJS suporta importações modulares para melhor tree-shaking e bundles menores. Importe apenas o que você precisa!
Pacote Principal
Importe tudo do pacote principal:
TypeScript
import { AzuraClient, applyDecorators } from "azurajs";JavaScript
const { AzuraClient, applyDecorators } = require("azurajs");Decoradores
Importe decoradores separadamente:
TypeScript
import { Controller, Get, Post, Put, Delete, Patch } from "azurajs/decorators";
import { Body, Param, Query, Headers, Req, Res } from "azurajs/decorators";JavaScript
// Não aplicável - Decoradores são uma feature do TypeScript
// Use a API funcional ao invés:
const { AzuraClient } = require("azurajs");
const app = new AzuraClient();
app.get("/", (req, res) => { /* ... */ });Middleware
Importe utilitários de middleware:
TypeScript
import { createLoggingMiddleware } from "azurajs/middleware";JavaScript
const { createLoggingMiddleware } = require("azurajs/middleware");Tipos
Importe tipos TypeScript:
import type { RequestServer, ResponseServer } from "azurajs";
// Ou use importação modular
import type { ConfigTypes } from "azurajs/config";Plugins
Importe plugins separadamente:
// Plugin CORS
import { cors } from "azurajs/cors";
// Rate Limiting
import { rateLimit } from "azurajs/rate-limit";Utilitários
Importe utilitários conforme necessário:
TypeScript
// Logger
import { logger } from "azurajs/logger";
// HTTP Error
import { HttpError } from "azurajs/http-error";
// Validadores
import { validateDto, validateSchema } from "azurajs/validators";
// Cookies
import { parseCookiesHeader, serializeCookie } from "azurajs/cookies";JavaScript
// Logger
const { logger } = require("azurajs/logger");
// HTTP Error
const { HttpError } = require("azurajs/http-error");
// Validadores
const { validateDto, validateSchema } = require("azurajs/validators");
// Cookies
const { parseCookiesHeader, serializeCookie } = require("azurajs/cookies");Router
Importe o router separadamente:
import { Router } from "azurajs/router";Exemplo Completo
// Importações principais
import { AzuraClient, applyDecorators } from "azurajs";
// Decoradores
import { Controller, Get, Post, Body, Param, Res } from "azurajs/decorators";
// Middleware
import { createLoggingMiddleware } from "azurajs/middleware";
// Utilitários
import { HttpError } from "azurajs/http-error";
// Tipos
import type { ResponseServer } from "azurajs";
import type { ConfigTypes } from "azurajs/config";
@Controller("/users")
class UserController {
@Get("/")
getAll(@Res() res: ResponseServer) {
res.json({ users: [] });
}
@Get("/:id")
getOne(@Param("id") id: string, @Res() res: ResponseServer) {
if (id === "0") {
throw new HttpError(404, "Usuário não encontrado");
}
res.json({ id, name: "Usuário" });
}
@Post("/")
create(@Body() body: any, @Res() res: ResponseServer) {
res.status(201).json({ id: Date.now(), ...body });
}
}
const app = new AzuraClient();
app.use(createLoggingMiddleware(app.getConfig()));
applyDecorators(app, [UserController]);
await app.listen(3000);Benefícios
✅ Bundles menores - Importe apenas o que usar
✅ Builds mais rápidos - Menos código para processar
✅ Melhor organização - Limites claros entre módulos
✅ Tree-shaking - Eliminação de código morto
✅ Type safety - Suporte completo ao TypeScript
Comparação de Importações
Antes (Bundle completo)
import {
AzuraClient,
Controller,
Get,
Post,
Body,
HttpError,
logger,
cors,
rateLimit
} from "azurajs";Tamanho do bundle: ~50KB (tudo incluído)
Depois (Importações modulares)
import { AzuraClient } from "azurajs";
import { Controller, Get, Post, Body } from "azurajs/decorators";
import { HttpError } from "azurajs/http-error";Tamanho do bundle: ~15KB (apenas o necessário)
Guia de Migração
Se você está usando importações antigas, veja como migrar:
// Jeito antigo
import { validateDto } from "azurajs";
// Jeito novo (recomendado)
import { validateDto } from "azurajs/validators";
// Jeito antigo
import { HttpError } from "azurajs";
// Jeito novo (recomendado)
import { HttpError } from "azurajs/http-error";
// Jeito antigo
import { cors } from "azurajs";
// Jeito novo (recomendado)
import { cors } from "azurajs/cors";Ambas as formas funcionam! O pacote principal re-exporta tudo por conveniência, mas importações modulares são recomendadas para builds de produção.
Módulos Disponíveis
| Módulo | Caminho de Importação | Descrição |
|---|---|---|
| Principal | azurajs | Pacote completo |
| Decoradores | azurajs/decorators | Todos os decoradores |
| Middleware | azurajs/middleware | Utilitários de middleware |
| Router | azurajs/router | Sistema de roteamento |
| Config | azurajs/config | Tipos de configuração |
| CORS | azurajs/cors | Plugin CORS |
| Rate Limit | azurajs/rate-limit | Rate limiting |
| Cookies | azurajs/cookies | Utilitários de cookies |
| Validadores | azurajs/validators | Funções de validação |
| Logger | azurajs/logger | Utilitário de logging |
| HTTP Error | azurajs/http-error | Classe de erro |
| Types | azurajs/types | Tipos comuns |
