首页 > 其他分享 >VUE分别使用普通方法、计算属性、监听器完成简易计算器

VUE分别使用普通方法、计算属性、监听器完成简易计算器

时间:2023-03-31 21:33:28浏览次数:45  
标签:VUE 监听器 方法 results 计算 计算器 组件 data 属性

VUE分别使用普通方法、计算属性、监听器完成简易计算器

声明:本方法使用VUE完整框架独立模块组件来实现

TOP:实现效果

Ⅰ:完整框架

Ⅱ:框架实现案例组件功能细分

1.APP组件

总组件,管理所有组件(每个单独的组件最后都汇总到APP组件里,便于管理)
    管理汇总:Methodss组件、Watchss.vue组件、Computedss.vue组件

1.Methodss.vue组件

定义普通方法实现简易计算器的功能

3.Watchss.vue组件

定义监听器实现简易计算器的功能

4.Computedss.vue组件

定义计算属性实现简易计算器的功能

Ⅲ:组件内容功能细分

1.template标签

负责HTML结构,标签里面写HTML结构

2.script标签

负责与页面的交互也就是和HTML的动态交互

3.style标签

负责HTML的结构样式也就是写CSS

4.style标签里的scoped

限制样式的使用范围(只局限于本组件使用)

Ⅳ:代码实现

1.普通方法实现简易计算器

<template>
    <div>
        <h1>我是调用普通方法:</h1>
        <input type="number" placeholder="请输入第一个数" v-model.number="number1">
        //多选标签
        <select v-model="opt">
            <option value="+">+</option>
            <option value="-">-</option>
            <option value="*">*</option>
            <option value="/">/</option>
        </select>
        <input type="number" placeholder="请输入第二个数" v-model.number="number2">
        <button @click="numInfo()">计算</button>	//使用普通方法函数需要手动调用
        <h2>结果为:{{results}}</h2>
        //点击按钮得到的计算结果
    </div>
</template>

<script>
    //要想在本组件注册其他组件需导入其他组件
    //import School from "@/components/School";

    //暴露组件,不暴露的话其他组件不能进行引入
    export default {
        // eslint-disable-next-line vue/multi-word-component-names
        name: "Methodss",    //给组件注册的名字,以防调用者乱起名
        //import引入的组件需要注入到对象中才能使用",
        components: {},
        data() {
            //这里存放数据",
            return {
                number1: '',	//用户输入第一个数
                number2: '',	//用户输入第二个数
                opt: '+',		//运算符号
                results: ''		//计算返回的结果
            };
        },
        //监听属性 类似于data概念",
        computed: {},
        //监控data中的数据变化",
        watch: {},
        //方法集合",
        methods: {
            numInfo(){
               //eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码,直接能识别加减乘除符号,识别的数学字符串当成数			   //学式子进行相加减
               this.results = eval(this.number1 + this.opt + this.number2)
               //用户调用方法把计算后的结果给到变量results
            }
        },
    }
</script>
    
<style scoped>
    div{
        background-color: pink;
    }
</style>

2.监听器实现简易计算器

<template>
    <div>
        <h1>我是监听器方法:</h1>
        <input type="number" placeholder="请输入第一个数" v-model.number="num.number1">
        <select v-model="num.opt">
            <option value="+">+</option>
            <option value="-">-</option>
            <option value="*">*</option>
            <option value="/">/</option>
        </select>
        <input type="number" placeholder="请输入第二个数" v-model.number="num.number2">
        <h2>结果为:{{results}}</h2>
    </div>
</template>

<script>
    //要想在本组件注册其他组件需导入其他组件
    //import School from "@/components/School";

    export default {
        // eslint-disable-next-line vue/multi-word-component-names
        name: "Watchss",    //给组件注册的名字,以防调用者乱起名
        //import引入的组件需要注入到对象中才能使用",
        components: {},
        data() {
            //这里存放数据",
            return {
            	//监听发生变化后计算的结果
                results: '',
                //把所要发生变化进行监听的数据放到一个数组里面,便于监听
                num:{	//数组统一管理数据
                    number1: '',	//用户输入第一个数
                    number2: '',	//用户输入第二个数
                    opt: '+',		//运算符
                },
            };
        },
        //监听属性 类似于data概念",
        computed: {},
        //监控data中的数据变化",
        watch: {
        	//'num.number1'  'num.number2'    'num.opt' 监视数组里面单独
            //监视整个数组里面的所有数据
            num:{
                deep:true,  //需要加上这个方法,不加上的话不会产生监视效果
                handler(){
                    //eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码,直接能识别加减乘除符号,识别的数学字符串					  //当成数学式子进行相加减,把进行发生变化的数据计算后给到变量results进行展示
                    this.results = eval(parseInt(this.num.number1+0) + this.num.opt + 				    						parseInt(this.num.number2+0))
                    //这里的’ +0 ‘是防止输入数字时结果直接展示为NaN不好看(可有可无)
                }
            }
        },
        //方法集合",
        methods: {},
   }
</script>

<style scoped>
    div{
        background-color: bisque;
    }
</style>

3.计算属性实现简易计算器

<template>
    <div>
        <h1>我是计算属性方法:</h1>
        <input type="number" placeholder="请输入第一个数" v-model.number="number1">
        //多选标签
        <select v-model="opt">
            <option value="+">+</option>
            <option value="-">-</option>
            <option value="*">*</option>
            <option value="/">/</option>
        </select>
        <input type="number" placeholder="请输入第二个数" v-model.number="number2">
        <h2>结果为:{{results}}</h2>
         //直接使用计算属性返回的结果
    </div>
</template>

<script>
    //要想在本组件注册其他组件需导入其他组件
    //import School from "@/components/School";

    export default {
        // eslint-disable-next-line vue/multi-word-component-names
        name: "Computedss",    //给组件注册的名字,以防调用者乱起名
        //import引入的组件需要注入到对象中才能使用",
        components: {},
        data() {
            //这里存放数据",
            return {
                number1: '',	//用户输入第一个数
                number2: '',	//用户输入第二个数
                opt: '+',		//运算符号
            };
        },
        //计算属性 类似于data概念",
        computed: {
            results(){
                //eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码,直接能识别加减乘除符号,识别的数学字符串					//当成数学式子进行相加减,把进行发生变化的数据计算后给到变量results进行展示
                return eval(parseInt(this.number1+0) +this.opt + parseInt(this.number2+0))
                //计算属性必须要有返回值,把计算的结果进行返回,直接使用即可
                //这里的’ +0 ‘是防止输入数字时结果直接展示为NaN不好看(可有可无)
            }
        },
        //监控data中的数据变化",
        watch: {},
        //方法集合",
        methods: {}
    }
</script>

<style scoped>
    div{
        background-color: lavender;
    }
</style>

Ⅴ:总结

普通方法

主要就是定义普通方法进行调用接收就行了

监听器

主要就是监听自身数据所发生的变化
特别注意的是监视同一个东西为多个属性数据时,把多个属性数据放到一个数组里面进行监视这样更方便

计算属性

主要就是计算完数据要有返回值
特别注意的是计算属性的函数方法要有返回值,直接使用双花括号接收就行

eval系统函数方法

函数可计算某个字符串,并执行其中的的 JavaScript 代码,直接能识别加减乘除符号,识别的数学字符串当成数学式子进行相加减,把进行发生变化的数据计算后给到变量results进行展示
还可以解析多个符号进行计算

Ⅵ:案例素材:

网盘提取:

链  接: https://pan.baidu.com/s/1oynFqzd9HTORVuuWaYKOug 
提取码: tf26

Ⅶ:致谢

本人在校学生一枚,也是第一次接触案例使用方法,本案例方法不一定全,也不一定最方便

!希望各位都能! -------欢迎大家的指导,本人以此感谢!

!成为自己心目! --------热爱IT行业的一枚小白IT闯

!中的 大牛! --------2023年3月31日 18点33分

----------------------------------------------------------------------------------------本人邮箱[email protected]

标签:VUE,监听器,方法,results,计算,计算器,组件,data,属性
From: https://www.cnblogs.com/itCHUANG/p/17277531.html

相关文章

  • process.env.NODE_ENV 开发环境配置详解(Vue项目)
    开发环境与生产环境下切换baseURL增加.env.development文件NODE_ENV='development'VUE_APP_BASE_URL='/api'增加.env.development文件NODE_ENV='production'VUE_APP_BASE_URL=''使用constaxiosRequest=axios.create({base......
  • 我的第一个项目(七):(解决问题)Vue中canvas无法绘制图片
    好家伙, 现在,我想要把我的飞机大战塞到我的主页里去,想办法把文件导入 然后,直接死在第一步,图片渲染都成问题 先用vue写一个测试文件来测试canvas的绘制<template><div><divref="stage"></div><button@click="drawsth()">添加</button><imgsrc......
  • Vue 2中实现数字滚动效果
     代码:<template><divclass="statistics-num"><!--显示当前数字,不使用逗号分隔符--><spanclass="num">{{currentVal.toString()}}</span><!--显示当前数字,用逗号分隔符--><!--<spanclass="num......
  • Vue引用富文本编辑器
    1.在package.json加上并安装依赖"devDependencies":{"@jsdawn/vue3-tinymce":"^1.1.7",}2.在页面中引入importVue3Tinymcefrom"@jsdawn/vue3-tinymce";3.使用<vue3-tinymcev-model="item.blockDataObj.text":s......
  • vue 使用 导出 Excel
    import*asXLSXfrom"xlsx";exportExcel(){varwb=XLSX.utils.table_to_book(document.querySelector('#data-table2'),{raw:true});varwbout=XLSX.write(wb,{bookType:'xl......
  • vue2中使用antv/G6节点内容可滚动的ER图
    先举一个栗子: 如果不会请移步到官网的栗子,请点击查看狠人话不多,直接给大家上代码:整体代码片段<template><divid="container"style="position:relative;"></div></template><script>/*eslint-disable*/importG6from"@antv/g6";i......
  • vue3创建工程
    创建Vue3项目的步骤如下:安装Node.jsVue3需要依赖Node.js环境,因此需要先安装Node.js。可以从官网下载Node.js的安装包并安装,也可以使用包管理器安装,例如在Ubuntu上可以使用以下命令安装:sudoapt-getupdatesudoapt-getinstallnodejssudoapt-getinstallnpm......
  • vue+leaflet示例:克里金插值渲染显示(附源码下载)
    demo源码运行环境以及配置运行环境:依赖Node安装环境,demo本地Node版本:14.19.1。运行工具:vscode或者其他工具。配置方式:下载demo源码,vscode打开,然后顺序执行以下命令:(1)下载demo环境依赖包命令:npmi(2)启动demo命令:npmrundev(3)打包demo命令:npmrunbuild:release示例效果......
  • vue3 - 在单独的项目制作自定义组件插件,支持vite【前提不要使用webpack专属语法】
    1.背景与vue2组件不一样,没有那么随意,如果想要支持vite,那么不要使用webpack专属语法,如defide和 require等2.解决在 package.json文件属性  main配置为插件入口文件位置,至于是js还是ts随意 目录  简单做了个组件  入口文件内容如下importComponentf......
  • vue或者react中的hooks的理解
    我们听过react里面有hooks的概念,那么怎么理解hooks呢? 其实vue2中,我们没有hooks的概念,vue3中我们引入了组合式函数(也就是用组合式api写的),它其实就是vue的hooks。 总结下来,hooks有以下特点:1、hooks其实就是个函数,只是实现它的方法比较特殊,利用组合式api实现的。2、组合式函......