求助,vue单文件组件如何拆分?

vue单文件组件如何拆分?

普通单文件组件:log.vue

js 复制代码
<script setup lang="ts">
import { ref } from 'vue';
​
const index = ref<number>(1)
</script>
​
<template>
    <h1>{{ index }}</h1>
</template>
​
<style scoped>
h1 {
    color: red;
    font-size: 50px;
}
</style>

目前情况

组长设计目的:

1.为了抽离逻辑内容,避免一个文件代码太多

2.逻辑代码使用class,可以抽离通用逻辑和工具到common,其他文件可以继承使用

拆分成两个文件:

log.hook.ts

ts 复制代码
import { Ref, ref } from "vue";
export default class log {
    index: Ref<number>
  
    constructor() {
        this.index = ref(1)
    }
​
}

log.vue

ts 复制代码
<script setup lang="ts">
import logHook from "./log.hook";
​
const hook = new logHook()
</script>
​
<template>
    <h1>{{ hook.index }}</h1>
</template>
​
<style scoped>
h1 {
    color: red;
    font-size: 50px;
}
</style>

缺点:

1.this.的问题.在log.hook.ts内部,写逻辑,都要this.XXX.this.AAA,很繁琐

2.在log.vue中调用log.hook.ts方法时,有时候会报this的错误

需求,有什么更好的拆分方法吗?

1.为了抽离逻辑内容,避免一个文件代码太多

2.逻辑代码使用class,可以抽离通用逻辑和工具到common,其他文件可以继承使用

相关推荐
熊的猫4 分钟前
webpack 核心模块 — loader & plugins
前端·javascript·chrome·webpack·前端框架·node.js·ecmascript
速盾cdn11 分钟前
速盾:vue的cdn是干嘛的?
服务器·前端·网络
四喜花露水44 分钟前
Vue 自定义icon组件封装SVG图标
前端·javascript·vue.js
前端Hardy1 小时前
HTML&CSS: 实现可爱的冰墩墩
前端·javascript·css·html·css3
web Rookie1 小时前
JS类型检测大全:从零基础到高级应用
开发语言·前端·javascript
Au_ust2 小时前
css:基础
前端·css
帅帅哥的兜兜2 小时前
css基础:底部固定,导航栏浮动在顶部
前端·css·css3
工业甲酰苯胺2 小时前
C# 单例模式的多种实现
javascript·单例模式·c#
yi碗汤园2 小时前
【一文了解】C#基础-集合
开发语言·前端·unity·c#
就是个名称2 小时前
购物车-多元素组合动画css
前端·css