六十天前端強化訓練之第八天到第十四天——綜合案例:用戶管理系統

=====歡迎來到編程星辰海的博客講解======

看完可以給一個免費的三連嗎,謝謝大佬!

目錄

一、知識體系詳解

1. 變量與作用域

2. 箭頭函數特性

3. 數組高階函數

4. DOM操作原理

5. 事件傳播機制

6. 閉包核心原理

7. 原型繼承體系

8. Promise工作流程

二、綜合案例:用戶管理系統

1. HTML結構

2. JavaScript代碼(app.js)

三、實現效果

四、學習要點總結

五、擴展學習推薦

官方文檔

優質文章


一、知識體系詳解

1. 變量與作用域

JAVASCRIPT

// var 存在變量提升和函數作用域
console.log(a); // undefined
var a = 10;// let/const 塊級作用域
{let b = 20;const MAX = 100;
}
console.log(b); // ReferenceError
2. 箭頭函數特性

JAVASCRIPT

const obj = {name: 'obj',regularFunc: function() {console.log(this.name); // obj},arrowFunc: () => {console.log(this.name); // undefined(繼承外層this)}
}
3. 數組高階函數

JAVASCRIPT

const numbers = [1,2,3,4];// map轉換
const doubled = numbers.map(n => n * 2); // filter篩選
const evens = numbers.filter(n => n%2 === 0);// reduce聚合
const sum = numbers.reduce((acc, cur) => acc + cur, 0);
4. DOM操作原理

JAVASCRIPT

// 創建元素
const div = document.createElement('div');
div.classList.add('box');// 批量插入
const fragment = document.createDocumentFragment();
items.forEach(item => {const li = document.createElement('li');fragment.appendChild(li);
});
ul.appendChild(fragment);
5. 事件傳播機制

6. 閉包核心原理

JAVASCRIPT

function createCounter() {let count = 0; // 閉包保護的變量return {increment: () => ++count,getCount: () => count}
}
7. 原型繼承體系

JAVASCRIPT

class Animal {constructor(name) {this.name = name;}speak() {console.log(`${this.name} makes a noise`);}
}class Dog extends Animal {constructor(name) {super(name);}speak() {super.speak();console.log(`${this.name} barks`);}
}
8. Promise工作流程


二、綜合案例:用戶管理系統(這是完整且可運行代碼,有詳細注釋)

1. HTML結構

HTML

<!DOCTYPE html>
<html>
<head><title>用戶管理系統</title><style>/* CSS樣式 */.container { max-width: 800px; margin: 20px auto; }.search-box { margin-bottom: 20px; }table { width: 100%; border-collapse: collapse; }th, td { padding: 12px; border: 1px solid #ddd; text-align: left; }th { background-color: #f5f5f5; cursor: pointer; }.pagination { margin-top: 20px; }</style>
</head>
<body><div class="container"><div class="search-box"><input type="text" id="searchInput" placeholder="輸入姓名或郵箱搜索..."></div><div id="userTable"></div><div class="pagination" id="pagination"></div></div><script src="app.js"></script>
</body>
</html>
2. JavaScript代碼(app.js)

JAVASCRIPT

class UserManager {constructor() {this.users = [];       // 原始數據this.filteredUsers = []; // 過濾后數據this.currentPage = 1; // 當前頁碼this.pageSize = 5;    // 每頁條數this.init();}/** 初始化方法(使用異步立即執行函數) */async init() {await this.fetchUsers();this.renderTable();this.setupEventListeners();}/** 使用fetch獲取數據(Promise應用) */async fetchUsers() {try {const response = await fetch('https://dummyjson.com/users?limit=20');const data = await response.json();this.users = data.users.map(user => ({id: user.id,name: `${user.firstName} ${user.lastName}`,age: user.age,email: user.email,department: user.company.department}));this.filteredUsers = [...this.users];} catch (error) {console.error('數據加載失敗:', error);}}/** 渲染表格(DOM操作) */renderTable() {const start = (this.currentPage - 1) * this.pageSize;const end = start + this.pageSize;const currentUsers = this.filteredUsers.slice(start, end);// 創建表格結構const table = document.createElement('table');table.innerHTML = `<thead><tr><th data-field="id">ID ▼</th><th data-field="name">姓名 ▼</th><th data-field="age">年齡 ▼</th><th data-field="email">郵箱 ▼</th><th data-field="department">部門 ▼</th></tr></thead><tbody>${currentUsers.map(user => `<tr><td>${user.id}</td><td>${user.name}</td><td>${user.age}</td><td>${user.email}</td><td>${user.department}</td></tr>`).join('')}</tbody>`;// 清空并更新表格const container = document.getElementById('userTable');container.innerHTML = '';container.appendChild(table);// 渲染分頁this.renderPagination();}/** 分頁組件 */renderPagination() {const totalPages = Math.ceil(this.filteredUsers.length / this.pageSize);const pagination = document.getElementById('pagination');// 生成頁碼按鈕pagination.innerHTML = Array.from({length: totalPages}, (_, i) => `<button class="${i + 1 === this.currentPage ? 'active' : ''}" onclick="userManager.goToPage(${i + 1})">${i + 1}</button>`).join(' ');}/** 事件綁定(使用事件委托) */setupEventListeners() {// 搜索功能document.getElementById('searchInput').addEventListener('input', (e) => {const keyword = e.target.value.toLowerCase();this.filteredUsers = this.users.filter(user =>user.name.toLowerCase().includes(keyword) ||user.email.toLowerCase().includes(keyword));this.currentPage = 1;this.renderTable();});// 表頭排序(閉包保存排序狀態)document.querySelector('#userTable').addEventListener('click', (e) => {if (e.target.tagName === 'TH') {const field = e.target.dataset.field;this.sortUsers(field);}});}/** 排序邏輯 */sortUsers(field) {let isAsc = true; // 閉包保存排序方向return () => {this.filteredUsers.sort((a, b) => {if (typeof a[field] === 'string') {return isAsc ? a[field].localeCompare(b[field]): b[field].localeCompare(a[field]);}return isAsc ? a[field] - b[field] : b[field] - a[field];});isAsc = !isAsc;this.renderTable();}}/** 分頁跳轉 */goToPage(page) {this.currentPage = page;this.renderTable();}
}// 初始化系統
const userManager = new UserManager();


三、實現效果


四、學習要點總結

  1. 變量作用域控制

    • 使用const/let進行塊級作用域管理
    • 使用IIFE管理私有變量
  2. 異步流程控制

    • async/await處理異步操作
    • Promise鏈式調用錯誤處理
  3. DOM操作優化

    • 使用文檔片段批量插入
    • 事件委托減少監聽器數量
  4. 函數式編程

    • map/filter/reduce組合使用
    • 純函數避免副作用
  5. 模塊化設計

    • 使用Class組織代碼
    • 職責單一原則

五、擴展學習推薦

官方文檔
  1. MDN JavaScript Guide
  2. ECMAScript 6 入門
  3. DOM Living Standard
優質文章
  1. JavaScript 閉包的終極指南
  2. Promise 使用模式最佳實踐
  3. 現代 JavaScript 教程

建議通過Chrome開發者工具的Sources面板調試代碼,觀察閉包變量和事件傳播過程,配合console.log驗證程序執行流程。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/71797.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/71797.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/71797.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

技術周總結 03.03 - 03.09 周日(Java監控 SpringAI)

文章目錄 一、03.05 周三二、03.08 周六openAI 的Spring開發 一、03.05 周三 jvisualvm java自帶的監控和故障排除工具 命令行執行后&#xff0c;會出現 JConsole 二、03.08 周六 openAI 的Spring開發 引入 spring-ai-openai-spirng-boot-starter 依賴 Spring AI http…

DeepSeek:中國AGI破局者的技術革命與生態重構

在AI領域被"算力霸權"與"技術壟斷"籠罩的今天&#xff0c;一家來自杭州的初創公司正以顛覆性創新撕開行業鐵幕。DeepSeek&#xff08;深度求索&#xff09;不僅重新定義了AGI技術研發范式&#xff0c;更通過開源生態構建引發全球AI產業格局的深度重構。 一…

manus本地部署使用體驗

manus部署 https://github.com/mannaandpoem/OpenManus git clone https://github.com/mannaandpoem/OpenManus.git 或者手工下載zip包解壓&#xff0c;包很小&#xff0c;只有幾百K。 cd OpenManus-main #創建python環境&#xff0c;有python3的可以用python3 python -m ven…

【統計至簡】【入門測試1】給定數據矩陣X,如何求其質心、中心化數據、標準化數據、格拉姆矩陣、協方差矩陣、相關系數矩陣

給定數據矩陣X&#xff0c;如何求其質心、中心化數據、標準化數據、格拉姆矩陣、協方差矩陣、相關系數矩陣。 ??設數據矩陣 X X X是一個 n p n\times p np的矩陣&#xff0c;其中 n n n是樣本數量&#xff0c; p p p是變量數量&#xff0c; X ( x i j ) X (x_{ij}) X(xij?…

CI/CD—Jenkins、Maven安裝

Jenkins簡介 Jenkins 是一款廣泛使用的開源持續集成和持續交付&#xff08;CI/CD&#xff09;工具&#xff0c;以下是對它的詳細介紹&#xff1a; 基本信息 起源與發展&#xff1a;Jenkins 最早起源于 Hudson 項目&#xff0c;后來從 Hudson 項目中分離出來獨立發展。自 2011 …

抽獎系統測試報告

項目鏈接: 管理員登錄頁面 項目功能: 管理員登錄: 登錄方式分為兩種: 手機號密碼登錄: 正確輸入密碼和手機號登錄 短信驗證碼登錄: 輸入手機號,等待驗證碼,輸入驗證碼登錄 管理員注冊: 登錄頁面點擊注冊按鈕即可注冊管理員身份 人員管理模塊: 人員管理模塊分為注冊…

【高級篇】大疆Pocket 3加ENC編碼器實現無線RTMP轉HDMI進導播臺

【高級篇】大疆Pocket 3加ENC編碼器實現無線RTMP轉HDMI進導播臺 文章目錄 準備工作連接設備RTMP概念ENCSHV2推流地址設置大疆Pocket 3直播設置總結 老鐵們好&#xff01; 很久沒寫軟文了&#xff0c;今天給大家帶了一個干貨&#xff0c;如上圖&#xff0c;大疆Pocket 3加ENC編…

【 <一> 煉丹初探:JavaWeb 的起源與基礎】之 Servlet 與 JSP 的協作:MVC 模式的雛形

<前文回顧> 點擊此處查看 合集 https://blog.csdn.net/foyodesigner/category_12907601.html?fromshareblogcolumn&sharetypeblogcolumn&sharerId12907601&sharereferPC&sharesourceFoyoDesigner&sharefromfrom_link <今日更新> 一、Servl…

【不是廣告】華為昇騰的一小步,Pytorch的一大步

華為昇騰的一小步&#xff0c;Pytorch的一大步 關鍵詞 首個、中國首個、全球第十、最高級別&#xff01;看看這些字眼&#xff0c;就知道事情不簡單&#xff01; 書接上文《Pytorch的一小步&#xff0c;昇騰芯片的一大步》 在2023年10月4日PyTorch 2.1版本的發布博客上&…

python從入門到精通(二十六):python文件操作之Word全攻略(基于python-docx)

python文件操作之word技巧大全 word技巧基礎到高級操作大全A.準備工作1. 安裝python-docx庫2. 導入庫 B.基礎操作1. 創建Word文檔1.1 創建文檔對象1.2 添加word標題1.3 添加word段落1.4 設置段落樣式1.5 創建有序列表1.6 創建無序列表1.7添加word分頁1.8 添加word圖片1.9 添加w…

Debian二次開發一體化工作站:提升科研效率的智能工具

在科研領域&#xff0c;數據處理是實驗成功的關鍵環節之一。隨著實驗數據的復雜性和規模不斷增加&#xff0c;傳統的數據處理方法已經難以滿足科研人員的需求。這時&#xff0c;一體化工作站應運而生&#xff0c;成為科研實驗數據處理的 “智能大腦”。 一體化工作站&#xff…

linux學習(五)(服務器審查,正常運行時間負載,身份驗證日志,正在運行的服務,評估可用內存)

服務器審查 在 Linux 中審查服務器的過程包括評估服務器的性能、安全性和配置&#xff0c;以確定需要改進的領域或任何潛在問題。審查的范圍可以包括檢查安全增強功能、檢查日志文件、審查用戶帳戶、分析服務器的網絡配置以及檢查其軟件版本。 Linux 以其穩定性和安全性而聞名…

Redis- 大key

大key 什么是大key問題大key的危害大key的識別方法大key問題的解決方案數據結構優化與拆分壓縮與序列化優化預防與監控機制 什么是大key問題 大Key問題是指在Redis等內存數據庫中&#xff0c;某個Key對應的value數據結構過大&#xff0c;通常是指單個Key的大小超過10KB甚至達到…

C語言_數據結構總結6:鏈式棧

純c語言代碼&#xff0c;不涉及C 順序棧的實現&#xff0c;歡迎查看這篇文章&#xff1a;C語言_數據結構總結5&#xff1a;順序棧-CSDN博客 0. 結構單元 #include<stdio.h> #include<stdlib.h> typedef int ElemType; typedef struct Linknode { ElemType…

新品速遞 | 多通道可編程衰減器+矩陣系統,如何破解復雜通信測試難題?

在無線通信技術快速迭代的今天&#xff0c;多通道可編程數字射頻衰減器和衰減矩陣已成為測試領域不可或缺的核心工具。它們憑借高精度、靈活配置和強大的多通道協同能力&#xff0c;為5G、物聯網、衛星通信等前沿技術的研發與驗證提供了關鍵支持。從基站性能測試到終端設備校準…

AI自動化應用的影響

生產力的迭代也終將伴隨著一代人的落幕。 2025年是AI應用爆發的開局之年&#xff0c;預計3-5年現有生產關系將出現顛覆性改革。 AI自動化對經濟和就業的影響是一個復雜且多維的問題&#xff0c;其長期影響取決于技術進步、政策調控、社會適應能力等多重因素的綜合作用。以下從技…

潤開鴻重磅首發基于“RISC-V+OpenHarmony+星閃”的“鴻銳”AI開發平臺

潤開鴻重磅首發基于“RISC-VOpenHarmony星閃”的“鴻銳”AI開發平臺 2月28日&#xff0c;2025中國RISC-V生態大會在北京中關村國際創新中心隆重召開。作為領先的鴻蒙生態專業技術公司和終端操作系統發行版提供商&#xff0c;以及不斷推進基于RISC-V與OpenHarmony全棧開源生態構…

Java 深度復制對象:從基礎到實戰

目錄 一、深度復制的概念二、實現深度復制的方法1. 使用序列化2. 手動實現深度復制 三、總結 在 Java 編程中&#xff0c;對象的復制是一個常見的需求。然而&#xff0c;簡單的復制操作&#xff08;如直接賦值&#xff09;只會復制對象的引用&#xff0c;而不是創建一個新的對象…

C++ Primer 交換操作

歡迎閱讀我的 【CPrimer】專欄 專欄簡介&#xff1a;本專欄主要面向C初學者&#xff0c;解釋C的一些基本概念和基礎語言特性&#xff0c;涉及C標準庫的用法&#xff0c;面向對象特性&#xff0c;泛型特性高級用法。通過使用標準庫中定義的抽象設施&#xff0c;使你更加適應高級…

FFmpeg-chapter7和chapter8-使用 FFmpeg 解碼視頻(原理篇和實站篇)

解碼流程如下圖 流程&#xff1a;首先&#xff0c;通過 avcodec_alloc_context3(nullptr) 分配一個 AVCodecContext 結構體&#xff0c;然后使用 avcodec_parameters_to_context 將參數復制到上下文中&#xff0c;接著通過 avcodec_find_decoder 查找指定的解碼器&#xff0c;并…