• Vue3+Typescript模块化逻辑层


    Vue3模块化指的是,把HTML和逻辑代码分离,对一个页面有多个复杂的功能时,可以一个功能对应一个文件,提高可读性,复用性,维护性,并且在遇到相同功能展示不同的UI时,可以直接集成某一个功能进行实现。
    下面一个小案列:
    实列:下面页面实现了两个功能,一个是数字加减,一个是数组添加和删除
     

    1.Home页面

    <template>
      <div class="home">
        <br/>
        数字:{{sum}}
        <button type="button" @click="add">加</button>
        <button type="button" @click="reduce">减</button>
        
        <p>
            输入追加的数字:<input type="" name="" id="" v-model="value"  /><button type="button" @click="pushEvent">追加数组</button>
            <button type="button" @click="deleteEvent">删除最后一项</button>
        </p>
        <div>
            <p v-for="(item,index) in arr" :key="index">
                {{item}}
            </p>
        </div>
      </div>
    </template>
    
    <script lang="ts">
    import { defineComponent } from 'vue';
    // 抽离的逻辑代码进行导出Home.ts文件内容
    import {sum, add,parameter,reduce,pushEvent,deleteEvent} from '@/hook/Home.ts'
    import { toRefs } from 'vue';
    export default defineComponent({
      name: 'Home',
      components: {
        
      },
      setup(){
          return {
              add,reduce,
              pushEvent,
              deleteEvent,
              sum,
              ...toRefs(parameter)
          }
      }
    });
    
    
    </script>

    2.创建的src/hook/Home.ts(实现数据的逻辑代码)

    import { ref,reactive,toRefs } from 'vue';
    // 1.数组循环 并且添加/删除// arr 数据接口 定义arr常量数组内必须全部是数字
    interface arr {
        arr:Array<number>,
        value:number
    }
    const parameter = reactive<arr>({
        arr:[1,2,3,4],
        value:0
    });
    // 给数组末尾追加
    function pushEvent(){
        if(parameter.value>0){ // 只能添加大于0的数字
            parameter.arr.push(parameter.value)
        }
    }
    // 删除数组最后一个
    function deleteEvent(){
        parameter.arr.pop()
    }
    // **********************************************
    // 2.数字加减
    const sum = ref<number>(1)
    function add(){
        sum.value +=1
    }
    function reduce(){
        sum.value -=1
    }
    export {
        sum,
        add,
        reduce,
        deleteEvent,
        parameter,
        pushEvent
        
    }

    我是马丁的车夫,欢迎转发收藏!

     
     
     
     
     
     
     
     
  • 相关阅读:
    Java单例模式:为什么我强烈推荐你用枚举来实现单例模式
    为什么阿里Java规约要求谨慎修改serialVersionUID字段
    使用MyCat实现MySQL读写分离
    你知道HTTP协议的ETag是干什么的吗?
    在centos7中安装MySQL5.7
    MySQL实现主从复制功能
    Leetcode题目169.求众数(简单)
    Leetcode题目160.相交链表(简单)
    Leetcode题目155.最小栈(简单)
    Leetcode题目152.乘积最大子序列(动态规划-中等)
  • 原文地址:https://www.cnblogs.com/Allen-project/p/15458506.html
Copyright © 2020-2023  润新知