"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > O que aprendi construindo uma calculadora com Vue.js

O que aprendi construindo uma calculadora com Vue.js

Publicado em 2024-11-08
Navegar:237

What I’ve Learned from Building a Calculator with Vue.js

Para meu quarto projeto, desenvolvi um aplicativo Calculadora usando Vue.js. Foi uma experiência valiosa para entender como lidar com a entrada do usuário, exibir resultados dinâmicos e realizar cálculos com JavaScript. Aqui está um resumo das principais lições que aprendi ao criar este aplicativo.

1. Tratamento da entrada do usuário e atualização da exibição

A calculadora precisa aceitar a entrada do usuário (números e operadores) e atualizar a exibição dinamicamente. Usei as propriedades reativas do Vue para acompanhar a entrada e o resultado atuais. A função ref no Vue facilitou o armazenamento e a modificação destes valores:

const result = ref('');
const calculated = ref(false);

Cada vez que um usuário clica em um número ou operador, a propriedade do resultado é atualizada, garantindo que a exibição mostre a entrada mais recente. A função handleClick é usada para acrescentar valores ao resultado:

const handleClick = (value) => {
    if (calculated.value) {
        result.value = value; // Reset the result if a calculation was just completed
        calculated.value = false;
    } else {
        result.value  = value;
    }
}

Esta foi uma lição essencial sobre como lidar com a interação do usuário e atualizar a interface com base em propriedades reativas.

2. Gerenciando Operadores: Evitando Entrada Redundante

Um desafio importante na construção de uma calculadora é garantir que vários operadores não sejam adicionados consecutivamente (por exemplo, evitando entradas como 3 4). Para resolver isso, adicionei uma verificação para substituir um operador se o último caractere já for um operador:

const handleOperatorClick = (operator) => {
    if (/[ */-]$/.test(result.value)) {
        result.value = result.value.slice(0, -1)   operator; // Replace the last operator
    } else {
        result.value  = operator; // Add the new operator
    }
    calculated.value = false; // Reset flag
};

Este método garante que apenas um operador esteja presente no final da string de entrada, melhorando a robustez da calculadora.

3. Limpando e excluindo entrada

A calculadora precisa fornecer funcionalidade para limpar todas as entradas (usando o botão AC) ou excluir o último caractere de entrada (usando o botão DEL). Implementei essas duas ações com os métodos clearAll e clear:

  • Clear All (AC): Redefine toda a entrada.
const clearAll = () => {
    result.value = '';
    calculated.value = false;
};
  • Excluir último caractere (DEL): Remove o último caractere da string de entrada.
const clear = () => {
    if (result.value && result.value.length > 0) {
        result.value = result.value.slice(0, -1); // Remove the last character
        if (result.value.length === 0) {
            clearAll(); // If the input is empty, reset everything
        }
    } else {
        clearAll();
    }
};

Este foi um exercício útil para lidar com a manipulação de strings e fornecer uma experiência de usuário tranquila.

4. Realizando cálculos

Uma das principais funcionalidades de uma calculadora é avaliar expressões inseridas pelo usuário. Usei a função eval() integrada do JavaScript para calcular o resultado da expressão de entrada:

const calculate = () => {
    let stringifiedResult = new String(result.value);
    result.value = eval(String(stringifiedResult)); // Evaluate the expression
    calculated.value = true; // Set flag to indicate the calculation is done
};

Embora eval() seja simples e eficaz para esta calculadora básica, aprendi sobre os riscos potenciais de segurança que ela representa ao lidar com entradas arbitrárias do usuário. Em projetos futuros, posso explorar a escrita de um analisador personalizado para maior segurança e flexibilidade.

5. Interface do usuário com Vue e Bootstrap

Para construir a interface da calculadora, usei o Bootstrap para um design rápido e responsivo. Os botões são organizados em uma grade com codificação de cores apropriada para números e operadores:

7
8
9
-

Aprendi como combinar o manipulação de eventos do Vue com as aulas do Bootstrap para criar uma interface de calculadora visualmente atraente e responsiva.

6. Lidando com casos extremos e aprimorando a experiência do usuário

Encontrei vários casos extremos ao construir a calculadora. Por exemplo, após realizar um cálculo, se um usuário inserir um novo número, a calculadora precisará redefinir o resultado anterior. Isso foi resolvido verificando o sinalizador calculado:

if (calculated.value) {
    result.value = value; // Replace the result with the new value
    calculated.value = false; // Reset the calculated flag
}

Outro recurso útil foi formatar o display para torná-lo mais intuitivo, como substituir automaticamente o último operador caso o usuário mude de ideia, melhorando a experiência do usuário.

Considerações finais: o que ganhei ao construir uma calculadora

Este projeto forneceu um mergulho profundo no tratamento de entradas dinâmicas, gerenciamento de estado e construção de uma interface de usuário limpa usando Vue.js. Adquiri conhecimentos práticos nas seguintes áreas:

  • Gerenciamento de estado: como rastrear e atualizar a entrada e o resultado do usuário dinamicamente.
  • Manipulação de eventos: resposta às ações do usuário (cliques numéricos, cliques do operador e cálculo de resultados).
  • Considerações de UI/UX: Garantir que a calculadora lide com casos extremos de maneira elegante e forneça uma interface de usuário clara e intuitiva.
  • Manipulação de strings: Análise e manipulação de strings de entrada para criar expressões matemáticas válidas.

Construir esta calculadora foi uma experiência gratificante que fortaleceu minha capacidade de gerenciar a entrada do usuário e criar aplicativos da web dinâmicos e interativos usando Vue.js. Estou ansioso para aplicar essas habilidades em projetos mais complexos!

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/willowjr/what-ive-learned-from-building-a-calculator-with-vuejs-3cj7?1 Se houver alguma violação, entre em contato com [email protected] para excluí-lo
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3