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 }
我是马丁的车夫,欢迎转发收藏!