前端项目组成

一、前端项目常见模块及功能(以 Vue/React 通用结构为例)

前端项目的模块本质是「按功能拆分的代码文件/文件夹」,就像盖房子的「砖、梁、窗」各司其职:

模块类型功能说明(大白话)举个例子
pages(页面)对应浏览器里能看到的完整页面(如首页、详情页)HomePage.vue(首页)、DetailPage.jsx(详情页)
components(组件)可复用的「小零件」(按钮、卡片、弹窗等),用来拼页面Button.vue(按钮)、Card.jsx(卡片)
api(接口)专门和后端交互的代码(发请求、拿数据)userApi.js(用户相关接口:登录、获取信息)
utils(工具)通用功能代码(格式化时间、处理数据、判断设备等)formatTime.js(把时间戳转成「2024-07-25」)
store(状态)存全局数据的「共享仓库」(如用户登录信息、购物车数据)Vue 用 Vuex/Pinia,React 用 Redux/Zustand
router(路由)控制页面跳转(比如点击「首页」跳转到 /home定义 /home 对应 HomePage 页面

二、模块之间的关系:谁依赖谁?

模块间的关系就像「组装机器」—— 大零件依赖小零件,小零件可能依赖更小的零件:

  1. pages 依赖 components
    页面是「大容器」,需要用组件拼起来。比如 HomePage 可能包含 Banner 组件(顶部轮播)、ProductList 组件(商品列表)。

  2. pages/components 依赖 api
    页面/组件要显示数据(如商品列表),得通过 api 模块向后端要数据。比如 ProductList 组件会调用 productApi.getList() 拿商品数据。

  3. pages/components 依赖 utils
    拿到数据后可能需要处理(比如时间戳转成正常时间),就会调用 utils 里的工具函数。比如 formatTime(new Date())

  4. pages/components 依赖 store
    全局共享的数据(如用户昵称)存在 store 里,页面/组件可以直接取来用。比如 store.userInfo.nickname

  5. router 关联 pages
    路由模块定义「访问哪个地址显示哪个页面」,比如 router 里配置 { path: '/home', component: HomePage },就意味着访问 /home 时显示 HomePage 页面。

三、模块间怎么调用?(核心:import 引入 + 直接用)

调用本质是「我需要你的功能,就把你引进来用」,和「借工具干活」一样:

1. 页面里用组件(pages 调用 components)
<!-- 比如在 HomePage.vue 里用 Card 组件 -->
<template><div class="home"><!-- 直接用引入的组件,就像用 HTML 标签 --><Card title="推荐商品" /> </div>
</template><script>
// 第一步:从 components 文件夹引入组件
import Card from '../components/Card.vue'; export default {components: { Card } // 第二步:注册后才能用
};
</script>
2. 组件里调接口(components 调用 api)
// 比如在 UserCard.jsx 组件里拿用户信息
import { getUserInfo } from '../api/userApi'; // 引入接口函数function UserCard() {// 组件加载时,调用 api 拿数据useEffect(() => {// 直接调用 api 里的函数getUserInfo().then(data => {console.log('拿到用户数据:', data);});}, []);return <div>用户信息卡片</div>;
}
3. 接口里用工具函数(api 调用 utils)
// api/userApi.js 里处理请求参数
import { formatParams } from '../utils/format'; // 引入工具函数// 登录接口
export function login(phone, password) {// 调用工具函数格式化参数(比如给参数加个时间戳)const params = formatParams({ phone, password }); return axios.post('/login', params); // 发请求
}

四、方法内部的调用逻辑(以「用户登录」为例串一遍)

拿「用户点击登录按钮 → 登录成功 → 显示用户信息」这个流程,看代码是怎么一步步调用的:

  1. 组件里的方法(触发点)
    LoginButton.vue 组件里的 handleLogin 方法(用户点击按钮时执行):

    import { loginApi } from '../api/userApi'; // 引入登录接口
    import { setToken } from '../utils/auth'; // 引入存 token 的工具methods: {handleLogin() {// 1. 调用 api 里的登录接口,传账号密码loginApi(this.phone, this.password).then(res => {// 2. 登录成功后,调用工具函数存 tokensetToken(res.token); // 3. 跳转到首页(调用路由方法)this.$router.push('/home'); });}
    }
    
  2. 接口方法(中间层)
    api/userApi.js 里的 loginApi 方法:

    import axios from 'axios';
    import { showError } from '../utils/alert'; // 引入弹窗工具export function loginApi(phone, password) {return axios.post('/api/login', { phone, password }).catch(err => {// 出错时调用工具函数显示错误弹窗showError('登录失败,请检查账号密码'); });
    }
    
  3. 工具方法(底层支持)
    utils/auth.js 里的 setToken 方法(单纯存数据):

    export function setToken(token) {// 把 token 存在浏览器本地存储里localStorage.setItem('token', token);
    }
    

总结:快速上手的小技巧

  1. 先找 pages 文件夹,打开一个页面文件(比如首页),看它引入了哪些 componentsapi,顺着「引入关系」找代码。
  2. 遇到不认识的函数,看它的 import 路径,就能知道来自哪个模块。
  3. 从一个简单功能(比如点击按钮)入手,用「断点调试」一步步跟代码(浏览器 F12 → Sources 面板),看它调用了哪些方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/93054.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/93054.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

聚观早报 | 猿编程推动中美青少年AI实践;华为Pura 80数字版售价公布;iPhone 17 Air电池曝光

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。整理丨肖羽7月24日消息猿编程推动中美青少年AI实践华为Pura 80数字版售价公布iPhone 17 Air电池曝光亚马逊收购AI初创公司Bee蜂巢半固…

unittest 案例执行顺序详解

unittest 案例执行顺序详解在 unittest 框架中&#xff0c;测试用例的执行顺序有默认规则&#xff0c;也可通过自定义方式调整。以下是具体说明&#xff1a;一、默认执行顺序规则unittest 对测试用例的执行顺序遵循 “按测试方法名的 ASCII 码排序” 原则&#xff0c;具体逻辑如…

【web大前端】001_前端开发入门:创建你的第一个网页

前端开发入门&#xff1a;创建你的第一个网页 在当今数字化时代&#xff0c;网页已经成为人们获取信息和交流的重要平台。对于想要学习编程的人来说&#xff0c;前端开发往往是一个不错的起点。本文将带你通过简单的两步&#xff0c;创建属于你的第一个网页程序。 点击这里去…

HTTP性能优化终极指南:从协议原理到企业级实践

前言&#xff1a;为什么性能优化是Web开发的生命线&#xff1f;根据Google研究数据&#xff0c;当页面加载时间从1秒增加到3秒时&#xff0c;跳出率提升32%&#xff1b;当达到5秒时&#xff0c;转化率下降90%。本文将通过七层优化体系&#xff0c;带您掌握HTTP性能优化的核心技…

Python 数据分析(二):Matplotlib 绘图

目录 1. 简介2. 绘图 2.1 折线图 2.1.1 单线2.1.2 多线2.1.3 子图 2.2 散点图2.3 直方图2.4 条形图 2.4.1 纵置2.4.2 横置2.4.3 多条 2.5 饼图 1. 简介 Matplotlib 是 Python 提供的一个绘图库&#xff0c;通过该库我们可以很容易的绘制出折线图、直方图、散点图、饼图等丰…

Scrapy分布式爬虫数据统计全栈方案:构建企业级监控分析系统

引言&#xff1a;数据统计在分布式爬虫中的战略价值在分布式爬虫系统中&#xff0c;​​数据统计与分析​​是系统优化的核心驱动力。根据2023年爬虫工程调查报告&#xff1a;实施专业统计方案的爬虫系统性能提升​​40%以上​​数据驱动的优化策略可减少​​70%​​的资源浪费…

计划任务(at和cron命令介绍及操作)

简介计划任务主要做一些周期性的任务&#xff0c;目前最主要的是定期备份数据分类at&#xff1a;一次性调度执行cron&#xff1a;循环调度执行at简介at 是一个用于安排一次性任务的命令行工具&#xff0c;适合在指定时间点执行单次任务语法at 时间 选项若要提交&#xff0c;通过…

[2025CVPR:图象合成、生成方向]WF-VAE:通过小波驱动的能量流增强视频 VAE 的潜在视频扩散模型

论文概述​ 这篇论文提出了一种名为WF-VAE(Wavelet Flow VAE)​的新型视频变分自编码器(Video VAE),旨在解决潜在视频扩散模型(LVDM)中的关键瓶颈问题,包括高计算成本和潜在空间不连续性。WF-VAE利用小波变换(Wavelet Transform)来分解视频信号,并通过能量流路径优…

Map接口-实现类HashMap

目录 一、什么是Map&#xff1f; 二、实现类HashMap 1.关键特点 无序、key唯一、value允许重复、key和value允许为null。 2.数据结构 2.1 JDK 1.7 2.2 JDK 1.8 2.3 关键参数 2.4 关键计算 3.扩容方式 3.1 初始化 3.2 扩容 4.常见方法 4.1 根据key存入value 4.2 …

深入解析Hadoop如何实现数据可靠性:三副本策略、校验和验证与Pipeline复制

Hadoop数据可靠性的重要性在大数据时代&#xff0c;数据可靠性已成为企业数字化转型的生命线。根据IDC预测&#xff0c;到2025年全球数据总量将增长至175ZB&#xff0c;其中企业数据占比超过60%。面对如此庞大的数据规模&#xff0c;任何数据丢失或损坏都可能造成数百万美元的经…

15.6 DeepSpeed+Transformers实战:LLaMA-7B训练效率提升210%,显存直降73%

DeepSpeedTransformers实战:LLaMA-7B训练效率提升210%的底层逻辑与实操指南 当LLaMA-7B的训练显存需求达到78GB时,单卡A100(80GB)几乎濒临溢出,更不用说普通GPU集群。而DeepSpeed与Hugging Face Transformers的深度集成,通过"ZeRO三阶段优化+混合精度+梯度检查点&q…

Nginx + PM2 实现Express API + React 前端 本地测试服务器搭建

一、工具准备 openSSL&#xff1a;需要针对https请求头 生成对应的 自签名证书。 Nginx&#xff1a;服务器搭建工具 nodeJS: Express API运行环境 PM2: node进程管理器。用于替代npm命令管理 启动命令。 二、openSSL 本地自签名证书生成。 创建服务器空文件夹&#xff08…

OTG原理讲解

文章目录一、什么是 OTG&#xff08;USB On-The-Go&#xff09;&#xff1f;✅ OTG 的定义&#xff1a;二、传统 USB 与 OTG 的区别三、OTG 的核心机制&#xff1a;**通过 ID 引脚判断角色**1. 对于 Micro-USB OTG&#xff1a;2. 电路如何感知 ID 引脚&#xff1f;四、OTG 电路…

数据结构系列之红黑树

前言 红黑树是比较重要的一颗树了&#xff0c;map和set的底层就是红黑树&#xff0c;一定要牢牢记住。 一、什么是红黑树 首先&#xff1a;红黑树仍然是一颗搜索二叉树&#xff0c;但他引入了颜色这一概念&#xff0c;每个结点多一个存储位来存储颜色&#xff0c;它通过维护下…

在OpenMP中,#pragma omp的使用

在OpenMP中&#xff0c;#pragma omp for 和 #pragma omp parallel for&#xff08;或 #pragma omp parallel num_threads(N)&#xff09;有本质区别&#xff0c;主要体现在 并行区域的创建 和 工作分配方式 上。以下是详细对比&#xff1a;1. #pragma omp for 作用 仅分配循环迭…

停止“玩具式”试探:深入拆解ChatGPT Agent的技术栈与实战避坑指南

摘要&#xff1a; 当许多人还在用ChatGPT写周报、生成样板代码时&#xff0c;其底层的Agent化能力已经预示着一场深刻的开发范式变革。这不再是简单的“AI辅助”&#xff0c;而是“人机协同”的雏形。本文旨在穿透表面的功能宣传&#xff0c;从技术栈层面拆解Agent模式的实现基…

element-plus安装以及使用

element-plus时为vue.js 3开发的组件库。 在引入前需要做如下准备 安装node.js https://blog.csdn.net/zlpzlpzyd/article/details/147704723 安装vue的脚手架vue-cli https://blog.csdn.net/zlpzlpzyd/article/details/149647351 安装element-plus github地址 https://git…

学习随想录-- web3学习入门计划

#60 转方向 web3 golang 以太坊应用 这是课表部分&#xff08;Golang以太坊方向&#xff09; Sheet b站up学习计划 第一阶段&#xff1a;基础能力构建&#xff08;1-2 个月&#xff09; 学习目标 掌握 Golang 核心语法与以太坊底层基础概念&#xff0c;建立开发知识框架。…

【RAG优化】PDF复杂表格解析问题分析

在构建检索增强生成(RAG)应用时,PDF文档无疑是最重要、也最普遍的知识来源之一。然而,PDF中潜藏着RAG系统的难点问题——复杂表格。这些表格富含高密度的结构化信息,对回答精准问题至关重要,但其复杂的视觉布局(多层表头、合并单元格、跨页表格等)常常让标准的文本提取…

ReAct Agent(LangGraph实现)

文章目录参考资料一 AI Agent二 ReAct三 LangGraph实现ReAct代理3.1 SerperAPI实时联网搜索3.2 ReAct实现参考资料 entic RAG 架构的基本原理与应用入门 一 AI Agent AI Agent 整个过程是一个动态循环。Agent不断从环境中学习&#xff0c;通过其行动影响环境&#xff0c;然后…