Skip to content

luis687687/rosaura

Folders and files

NameName
Last commit message
Last commit date

Latest commit

79b20b4 · Jul 28, 2024

History

28 Commits
Jun 27, 2024
Jul 5, 2024
Jul 6, 2024
Jul 28, 2024
Jun 27, 2024
Jul 28, 2024
Jul 28, 2024
Jul 28, 2024
Jun 27, 2024
Jun 27, 2024
Jul 28, 2024

Repository files navigation

Rosaura Framework

Rosaura é um framework leve e flexível para a construção de aplicações web dinâmicas. Ele permite a criação de componentes reutilizáveis e a manipulação eficiente de rotas e estados.

Índice

Visão Geral

O Rosaura Framework foi desenvolvido para facilitar a criação de aplicações web, proporcionando uma estrutura para a construção de componentes, gerenciamento de rotas e vinculação de dados. É ideal para desenvolvedores que buscam uma alternativa leve e fácil de usar para frameworks mais pesados.

Estrutura do Projeto

/project-root
├── assets
├── rosaura
│ ├── rozaura
│ ├── ...
├── routes
├── src
│ ├── Components
│ ├── Pages
│ ├── ...
├── index.html
├── index.js
└── app.js

Principais Pastas e Arquivos

  • assets: Contém arquivos estáticos como imagens e ícones.
  • rosaura: Contém o núcleo do framework, incluindo funções e componentes principais.
  • routes: Define as rotas da aplicação.
  • src: Contém componentes e páginas personalizadas.
  • index.html: O arquivo HTML principal da aplicação.
  • index.js: O ponto de entrada da aplicação.
  • app.js: Define a estrutura e o gerenciamento de rotas da aplicação.

Instalação🚀

Para usar o Rosaura Framework, clone este repositório e abra o arquivo index.html em seu navegador, em live server

git clone https://github.com/luis687687/rosaura.git
cd rosaura
open index.html

Uso🔥

Criando Componentes💡

Os componentes são construídos usando a função BuildComponent. Por exemplo, para criar um botão simples:

import Rosaura, { BuildComponent } from "../../../rosaura/rozaura/index.js";
const MeuBotao = () => {
    return BuildComponent({
        type: "button",
        attributes: { id: "meuBotao" },
        events: {
            click: () => alert("Botão clicado!"),
            mouseup: () => alert("Mouse em cima!"),
            mouseleave: () => alert("Mouse fora!")
        },
        text: "Clique Aqui"
    });
};

Gerenciando Rotas🚗

O Rosaura Framework fornece um sistema de roteamento simples. As rotas são definidas em app.js usando RosauraRouter e RosauraRoute.

import Rosaura from "./rosaura/rozaura/index.js";
import Page1 from "./src/Pages/Page1/index.js";
import Page2 from "./src/Pages/Page2/index.js";

export default () => {
    return Rosaura.RosauraRouter(
        Rosaura.RosauraRoute({
            routes: [
                { element: Page1, path: "/page1", attributes: {} },
                { element: Page2, path: "/page2", attributes: {} }
            ]
        })
    );
};

Manipulação de Variáveis de Estado🎮

Utilize defVariable para criar variáveis de estado e varMonitor para monitorar alterações. Por exemplo:

import { defVariable, varMonitor, varPrint } from "../../../rosaura/rozaura/index.js";

export default ({})=>{
  const [contador, setContador] = defVariable(0);

  varMonitor(() => {
      const novoValor = contador.value
      console.log("O contador foi atualizado para:", novoValor);
  }, [contador]);

  return(
    BuildComponent({
      childElements: [
        BuildComponent({
          text: varPrint("Contador de cliques {} ", [contador]),
          style: {width: "fit-content"}}),

         BuildComponent({
            style: {
                background: 'brown',
                color: 'white',
                width: 'fit-content',
                padding: '10px 30px',
                borderRadius: '8px',
                cursor: 'pointer'
            },
            text: "Clica",
            events: { click: _ => setContador(contador.value + 1)}
        })
      ]
    })
  )
}

Formulários e Inputs📝

O Rosaura oferece componentes de formulário e input prontos para uso. Por exemplo, para criar um formulário:

import FormComponent from "../../Components/FormComponent/index.js";
import InputComponent from "../../Components/InputComponent/index.js";

const MeuFormulario = () => {
    const [text, setText] = defVariable()

    return FormComponent({
        action: "/destination.php",
        childElements: [
            BuildComponent({type:"h1", text: varPrint("Valor da input {}", [text])})
            InputComponent({ name: "nome", value: "", onChange: (value) => setText(value) }),

            BuildComponent({
                type: "input",
                events: {
                    click: () => alert("Formulário enviado!")
                },
                attibutes: {
                  type: "submit"
                },
                text: "Enviar"
            })
        ]
    });
};

Exemplos🔦

Exemplo de Uso de varPrint

import { varPrint, defVariable } from "../../../rosaura/rozaura/index.js";

const MeuComponente = () => {
  const [variable, setVariable] = defVariable(0)
  setInterval( _ => setVariable(variable.value + 1 ), 2000)

  return BuildComponent({
      text: varPrint("Texto dinâmico aqui {} à cada 2s ", [variable])
  });
};

Exemplo de Uso de routeIn

import routeIn from "../../../rosaura/rozaura/RosauraRouter/routeIn/index.js";

export default ({routerref}) => {
  
  routeIn((params) => {
    console.log("Rota aberta com parâmetros da url:", params);
  }, { routerref });

return(
    BuildComponent({
      text: "Página 1"
    })
  )
}

params contém um objecto com os parâmetros da url actual routerref é obrigatório ser declarado como atributo de um objecto dentro do parámetro da função principal

routeLeave tem a mesma estrutura que o routeIn, com a diferença de que a função é executada quando a rota é terminada

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published