前端項目組成

一、前端項目常見模塊及功能(以 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
英文地址,請注明出處:http://en.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;然后…