MST

星途 面试题库

面试题:Vue中使用Vue Composition API如何实现基础的模块化设计

请阐述在Vue项目里,使用Vue Composition API时,怎样通过简单的方法将不同的功能逻辑进行模块化,例如一个用户登录功能的逻辑如何单独模块化?并给出相应的代码示例。
34.9万 热度难度
前端开发Vue

知识考点

AI 面试

面试题答案

一键面试

在Vue Composition API中,可以通过将不同功能逻辑封装到独立的函数中来实现模块化。

以用户登录功能为例:

  1. 创建一个独立的文件,例如useLogin.js,用于存放登录相关逻辑。
import { ref } from 'vue';

export function useLogin() {
    const username = ref('');
    const password = ref('');
    const error = ref('');

    const login = async () => {
        try {
            // 模拟登录请求
            const response = await fetch('/api/login', {
                method: 'POST',
                headers: {
                    'Content-Type': 'application/json'
                },
                body: JSON.stringify({ username: username.value, password: password.value })
            });
            if (!response.ok) {
                throw new Error('登录失败');
            }
            const data = await response.json();
            // 登录成功后的处理
            console.log('登录成功', data);
        } catch (e) {
            error.value = '用户名或密码错误';
        }
    };

    return {
        username,
        password,
        error,
        login
    };
}
  1. 在Vue组件中使用这个模块化的逻辑:
<template>
    <div>
        <input v-model="username" placeholder="用户名">
        <input v-model="password" placeholder="密码" type="password">
        <button @click="login">登录</button>
        <p v-if="error">{{ error }}</p>
    </div>
</template>

<script setup>
import { useLogin } from './useLogin.js';

const { username, password, error, login } = useLogin();
</script>

这样,用户登录功能的逻辑就被单独模块化了,其他组件如果也需要登录功能,直接引入useLogin函数即可复用。