VUE前端初级新手知识大全(终)

简介: 教程来源 https://app-a87ujc988w01.appmiaoda.com/ 本教程详解Vue 3实战要点:Axios安装配置、请求/响应拦截器、token自动注入;剖析ref/reactive响应式陷阱、v-for的key规范、v-if与v-show差异及插值闪烁解决方案,强调动手实践为学习关键。

七、后端交互

7.1 安装与基本使用
Vue本身不封装AJAX请求,推荐使用Axios库:

npm install axios
<script setup>
import { ref, onMounted } from 'vue';
import axios from 'axios';

const posts = ref([]);
const loading = ref(false);
const error = ref(null);

const fetchPosts = async () => {
    loading.value = true;
    error.value = null;

    try {
        const response = await axios.get('https://jsonplaceholder.typicode.com/posts');
        posts.value = response.data.slice(0, 5);  // 取前5条
    } catch (err) {
        error.value = '数据加载失败';
        console.error(err);
    } finally {
        loading.value = false;
    }
};

// 组件挂载后自动加载数据
onMounted(() => {
    fetchPosts();
});
</script>

<template>
    <div>
        <button @click="fetchPosts">刷新数据</button>

        <div v-if="loading">加载中...</div>
        <div v-else-if="error">{
  { error }}</div>
        <ul v-else>
            <li v-for="post in posts" :key="post.id">
                <h4>{
  { post.title }}</h4>
                <p>{
  { post.body }}</p>
            </li>
        </ul>
    </div>
</template>

7.2 拦截器与统一配置
在实际项目中,通常会对Axios进行统一配置:

// utils/request.js
import axios from 'axios';

const request = axios.create({
    baseURL: 'https://api.example.com',
    timeout: 10000,
    headers: {
        'Content-Type': 'application/json'
    }
});

// 请求拦截器
request.interceptors.request.use(
    config => {
        // 添加token
        const token = localStorage.getItem('token');
        if (token) {
            config.headers.Authorization = `Bearer ${token}`;
        }
        return config;
    },
    error => {
        return Promise.reject(error);
    }
);

// 响应拦截器
request.interceptors.response.use(
    response => {
        return response.data;  // 直接返回数据部分
    },
    error => {
        if (error.response?.status === 401) {
            // 未授权,跳转登录页
            router.push('/login');
        }
        return Promise.reject(error);
    }
);

export default request;

八、新手常见问题与避坑指南

8.1 响应式数据注意事项
问题1:ref在模板和脚本中的使用差异

// ❌ 错误
const count = ref(0);
count++;  // 报错!无法直接修改

// ✅ 正确
count.value++;  // 脚本中必须使用 .value

在模板中,Vue会自动解包,可以直接使用{ { count }};但在JavaScript中,必须通过.value访问和修改。

问题2:reactive不能直接赋值

// ❌ 错误:直接赋值会破坏响应式
let state = reactive({ user: null });
state = { user: '张三' };  // 失去了响应式

// ✅ 正确:修改属性
state.user = '张三';

// ✅ 也可以使用Object.assign
Object.assign(state, { user: '张三', age: 25 });

8.2 列表渲染的key属性
使用v-for时,务必添加:key属性,且key应使用唯一标识:

<!-- ❌ 不推荐 -->
<li v-for="item in items">{
  { item.name }}</li>

<!-- ✅ 推荐 -->
<li v-for="item in items" :key="item.id">{
  { item.name }}</li>

key帮助Vue识别哪些元素被修改、添加或移除,对渲染性能至关重要。
8.3 条件渲染:v-if vs v-show
image.png

<!-- v-if:条件不满足时不渲染 -->
<div v-if="isAdmin">管理员面板</div>

<!-- v-show:始终渲染,但通过CSS隐藏 -->
<div v-show="isVisible">始终存在的元素</div>

8.4 插值表达式闪烁问题
在使用CDN引入Vue时,页面加载时可能短暂显示{ { message }}原始文本,这种现象称为"闪烁"。解决方案是使用v-text指令:

<!-- ❌ 可能出现闪烁 -->
<span>{
  { message }}</span>

<!-- ✅ 不会闪烁 -->
<span v-text="message"></span>

对于初学者而言,最重要的是动手实践。不要停留在阅读文档,尽快创建你的第一个Vue应用,然后逐步增加功能。随着一个个小项目的完成,你对Vue的理解会越来越深入,编写代码也会越来越得心应手。
来源:
https://app-a87ujc988w01.appmiaoda.com/

相关文章
|
10天前
|
人工智能 安全 Linux
【OpenClaw保姆级图文教程】阿里云/本地部署集成模型Ollama/Qwen3.5/百炼 API 步骤流程及避坑指南
2026年,AI代理工具的部署逻辑已从“单一云端依赖”转向“云端+本地双轨模式”。OpenClaw(曾用名Clawdbot)作为开源AI代理框架,既支持对接阿里云百炼等云端免费API,也能通过Ollama部署本地大模型,完美解决两类核心需求:一是担心云端API泄露核心数据的隐私安全诉求;二是频繁调用导致token消耗过高的成本控制需求。
5521 13
|
18天前
|
人工智能 JavaScript Ubuntu
5分钟上手龙虾AI!OpenClaw部署(阿里云+本地)+ 免费多模型配置保姆级教程(MiniMax、Claude、阿里云百炼)
OpenClaw(昵称“龙虾AI”)作为2026年热门的开源个人AI助手,由PSPDFKit创始人Peter Steinberger开发,核心优势在于“真正执行任务”——不仅能聊天互动,还能自动处理邮件、管理日程、订机票、写代码等,且所有数据本地处理,隐私完全可控。它支持接入MiniMax、Claude、GPT等多类大模型,兼容微信、Telegram、飞书等主流聊天工具,搭配100+可扩展技能,成为兼顾实用性与隐私性的AI工具首选。
21985 118

热门文章

最新文章