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/

相关文章
|
2月前
|
JavaScript 前端开发 API
VUE前端初级新手知识大全(一)
教程来源 https://app-a6nw7st4g741.appmiaoda.com/ Vue.js是轻量、易上手的渐进式前端框架,专注视图层,支持声明式编程与MVVM模式。本文系统讲解入门知识:从CDN/CLI环境搭建、核心语法(插值、指令、ref/reactive)、响应式原理,到计算属性与侦听器,助你快速构建首个Vue应用。
|
JavaScript 前端开发 Java
提升Vue.js技能!不得不看的三本Vue.js 3书籍
Vue.js是流行的 Web 前端框架,目前最新版本是Vue.js 3。本节介绍三本有关Vue.js 3的书籍。
591 0
使用element clickoutside自定义指令事件,点击元素外部触发(element-ui/src/utils/clickoutside)
使用element clickoutside自定义指令事件,点击元素外部触发(element-ui/src/utils/clickoutside)
|
SQL 缓存 NoSQL
【前后端】低代码平台Jeecg-Boot 3.2云服务器部署流程
【前后端】低代码平台Jeecg-Boot 3.2云服务器部署流程
2039 0
【前后端】低代码平台Jeecg-Boot 3.2云服务器部署流程
(详细图解过程) IDEA在创建类的的时候自动生成作者信息、时间等信息
这篇文章介绍了如何在IntelliJ IDEA中设置文件和代码模板,以便在创建新类时自动生成包含作者信息、日期和时间等信息的文件头。
(详细图解过程) IDEA在创建类的的时候自动生成作者信息、时间等信息
|
开发框架 安全 Java
.net和java有什么样的区别?
Java和.NET在本质、编程语言、生态系统与工具、跨平台性、应用领域、性能与效率以及安全性与可靠性等方面都存在明显的区别。选择哪个平台取决于具体的需求、技术栈和目标平台。
1229 7
|
JavaScript 前端开发
【Vue 3】如何实现动态表单生成器的拖拽功能?
【Vue 3】如何实现动态表单生成器的拖拽功能?
|
存储 JavaScript 前端开发
Vue2:组件高级(上)
Vue2:组件高级(上)
433 1
Vue2:组件高级(上)