当前位置:首页 > VUE

vue实现计算器

2026-01-21 23:17:58VUE

Vue 实现计算器的方法

使用 Vue 实现计算器可以充分利用其响应式数据和组件化特性。以下是一个简单的实现方案:

创建 Vue 项目

使用 Vue CLI 或 Vite 初始化项目:

npm init vue@latest calculator
cd calculator
npm install

核心代码实现

src/App.vue 或单独组件中实现:

<template>
  <div class="calculator">
    <div class="display">{{ current || '0' }}</div>
    <div class="buttons">
      <button @click="clear">C</button>
      <button @click="sign">+/-</button>
      <button @click="percent">%</button>
      <button @click="divide" class="operator">÷</button>

      <button @click="append('7')">7</button>
      <button @click="append('8')">8</button>
      <button @click="append('9')">9</button>
      <button @click="times" class="operator">×</button>

      <button @click="append('4')">4</button>
      <button @click="append('5')">5</button>
      <button @click="append('6')">6</button>
      <button @click="minus" class="operator">-</button>

      <button @click="append('1')">1</button>
      <button @click="append('2')">2</button>
      <button @click="append('3')">3</button>
      <button @click="add" class="operator">+</button>

      <button @click="append('0')" class="zero">0</button>
      <button @click="dot">.</button>
      <button @click="equal" class="operator">=</button>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      current: '',
      previous: null,
      operator: null,
      operatorClicked: false
    }
  },
  methods: {
    clear() {
      this.current = '';
    },
    sign() {
      this.current = this.current.charAt(0) === '-' ? 
        this.current.slice(1) : '-' + this.current;
    },
    percent() {
      this.current = parseFloat(this.current) / 100;
    },
    append(number) {
      if (this.operatorClicked) {
        this.current = '';
        this.operatorClicked = false;
      }
      this.current = `${this.current}${number}`;
    },
    dot() {
      if (this.current.indexOf('.') === -1) {
        this.append('.');
      }
    },
    setPrevious() {
      this.previous = this.current;
      this.operatorClicked = true;
    },
    divide() {
      this.operator = (a, b) => a / b;
      this.setPrevious();
    },
    times() {
      this.operator = (a, b) => a * b;
      this.setPrevious();
    },
    minus() {
      this.operator = (a, b) => a - b;
      this.setPrevious();
    },
    add() {
      this.operator = (a, b) => a + b;
      this.setPrevious();
    },
    equal() {
      this.current = `${this.operator(
        parseFloat(this.previous), 
        parseFloat(this.current)
      )}`;
      this.previous = null;
    }
  }
}
</script>

<style>
.calculator {
  width: 300px;
  margin: 50px auto;
  font-size: 24px;
}
.display {
  background: #f0f0f0;
  padding: 15px;
  text-align: right;
  border: 1px solid #ddd;
  border-radius: 5px 5px 0 0;
}
.buttons {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  grid-gap: 1px;
}
button {
  padding: 20px;
  background: #fff;
  border: 1px solid #ddd;
  cursor: pointer;
}
button:hover {
  background: #eee;
}
.operator {
  background: #f0f0f0;
}
.zero {
  grid-column: span 2;
}
</style>

功能扩展建议

  1. 增加历史记录功能,存储之前的计算结果
  2. 实现科学计算器功能(三角函数、对数等)
  3. 添加键盘支持,允许用户使用键盘输入
  4. 实现主题切换功能(深色/浅色模式)
  5. 添加动画效果提升用户体验

部署与测试

运行开发服务器:

npm run dev

构建生产版本:

npm run build

这个实现包含了基本计算功能,包括加减乘除、百分比、正负号切换等操作。通过 Vue 的响应式特性,界面会自动更新计算结果。

vue实现计算器

标签: 计算器vue
分享给朋友:

相关文章

vue实现关键词轮播

vue实现关键词轮播

Vue 实现关键词轮播 基础实现方案 使用 Vue 的 v-for 和 setInterval 实现基础轮播效果: <template> <div class="keywor…

vue实现微博发布动态

vue实现微博发布动态

使用Vue实现微博发布动态功能 创建Vue组件结构 新建一个WeiboPost.vue组件,包含文本框、图片上传和发布按钮: <template> <div class="w…

实现vue

实现vue

安装Vue.js 通过npm安装Vue.js是最常见的方式。确保已安装Node.js和npm,运行以下命令: npm install vue 或者使用CDN直接引入: <script src…

vue 实现pc

vue 实现pc

Vue 实现 PC 端应用的核心要点 Vue.js 是一个渐进式框架,适合构建 PC 端单页应用(SPA)或复杂的前端界面。以下是实现 PC 端应用的关键方法和注意事项: 项目初始化与工程化配置 使…

vue实现mvc

vue实现mvc

Vue 实现 MVC 模式 Vue 本身是一个 MVVM(Model-View-ViewModel)框架,但可以通过结构调整实现 MVC(Model-View-Controller)模式。以下是具体实…

vue实现ai

vue实现ai

Vue 实现 AI 功能 Vue.js 可以通过集成第三方 AI 服务或本地 AI 模型来实现 AI 功能。以下是几种常见的方法: 集成第三方 AI API 使用 Vue 调用如 OpenAI、G…