AzuraJS Logo
AzuraJSFramework
v2.2 Beta

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óduloCaminho de ImportaçãoDescrição
PrincipalazurajsPacote completo
Decoradoresazurajs/decoratorsTodos os decoradores
Middlewareazurajs/middlewareUtilitários de middleware
Routerazurajs/routerSistema de roteamento
Configazurajs/configTipos de configuração
CORSazurajs/corsPlugin CORS
Rate Limitazurajs/rate-limitRate limiting
Cookiesazurajs/cookiesUtilitários de cookies
Validadoresazurajs/validatorsFunções de validação
Loggerazurajs/loggerUtilitário de logging
HTTP Errorazurajs/http-errorClasse de erro
Typesazurajs/typesTipos comuns

Próximos Passos 📖

On this page