學一個前端 UI 框架,要學些什么內容?

假如你現在要自學 React/Vue 框架,怎么學?

絕大部分同學可能是這樣學的:

  • 直接去看官方文檔,或者是找一些視頻看一遍,學會這個框架的一些基礎語法,特性功能等等
  • 參考一些例子上手編寫 demo,簡單感受一下
  • 然后就是在工作中使用框架,碰到各種問題的時候,上網查找解決方案或者詢問 AI
  • 最后就是自己想要深入學習的時候,才會去鉆研學習它的原理

這樣學好像也沒什么問題,因為大家都是這么做的,包括我當初也是這樣自學的。

但是,這樣學有點像無頭蒼蠅,對于框架的應用經驗全靠摸爬滾打一路踩坑才得來的,成長速度非常慢。

作為過來人,我覺得應該讓你提前了解到:我們要學一個前端 UI 框架,應該要關注哪些內容

這樣,可以提前有個概念,讓你帶著目標,查漏補缺地去學習,才能提升得更快。

如何操作 DOM 結構

首先要學的,是這個框架是如何操作 DOM 結構的。

現在流行的 UI 框架,主打的就是封裝原生 DOM 操作,讓我們可以不直接操作 DOM,只關注數據。

因此,我們更加需要了解,這個框架是怎樣操作 DOM 的。核心是這些點:

  • 怎樣創建 DOM tree?如何把創建好的 DOM tree 掛載到 document 中?
  • 怎樣更新 DOM tree?怎樣修改某個元素的內容?怎樣插入元素?怎樣移除元素?
  • 怎樣讀取 DOM 元素?雖然 UI 框架給我們做了很好的封裝,但是在某些特殊場景中,我們還是要直接操作 DOM tree,框架是怎樣提供這個能力的?
  • 怎樣刪除 DOM tree?如何把 DOM tree 從 document 中卸載?

如何操作樣式

然后就要學習如何操作樣式,CSS 是前端非常關鍵的一環。

框架把原生 DOM 封裝起來了,我們就不能用常規的方法操作 CSS 了。

因此,我們需要關注這些點:

  • 如何給 DOM 元素添加樣式 class?如何讀取 DOM 元素的樣式 class?如何更新 DOM 元素的樣式 class?
  • 如何給 DOM 元素添加 inline style?
  • 如何讀取 DOM 元素的 CSS style?如何修改 DOM 元素的 CSS style?

如何處理事件

接下來要學習處理事件。主要是以下這些功能點:

  • 如何給 DOM 元素綁定事件?
  • 如何給 DOM 元素解綁事件?
  • 是否遵循 DOM 事件標準?事件捕獲和事件冒泡都有嗎?
  • 如何獲取事件對象?如何獲取原始的事件對象?
  • 如何阻止冒泡?如何阻止默認行為?
  • 是否支持自定義事件?

如何處理表單

接下來是處理表單。畢竟對于前端來說,處理表單是基礎能力。而涉及到表單的頁面,往往都是比較復雜的,因此更加需要學習 UI 框架是如何讓我們處理表單的。

對于處理表單,我們主要關注這些點:

  • 如何設置原生表單元素的屬性?比如 value,disabled,placeholder 等等
  • 如何設置/讀取不同表單元素的值?
  • 如何監聽表單元素的值變化?
  • 如何獲取表單的原生 DOM 元素?

如何實現組件化

前面都是 JavaScript 和 DOM 的必備功能,接下來我們需要重點學習組件化相關的內容。

現在流行的 UI 框架,主打的是組件化開發框架,這有利于我們組織復雜項目的代碼,讓代碼更好被維護和復用。

對于組件化,我們要了解這個框架是如何實現組件化的,主要關注這些點:

  • 如何自定義組件?一個自定義組件的代碼如何組織?
  • 如何創建組件?如何引入組件?
  • 組件的生命周期是怎樣的?有哪些鉤子,它們的作用分別是什么?

如何實現組件通信

當我們利用組件化的思想去組織我們的代碼時,整個頁面的結構就是一個組件樹(component tree),

這時,我們需要關注一個非常重要的話題 —— 組件通信。

組件化可以讓我們的代碼內聚在某個組件內部,但這些組件是不能完全獨立的,它們需要通過某些通信方式來協作,從而完成復雜的功能。

因此,我們需要學習這個框架是如何實現組件通信的,主要是以下這些點:

  • 父 -> 子 的通信方式有哪些?各自的優缺點是什么、適用于什么場景?
  • 子 -> 父 的通信方式有哪些?各自的優缺點是什么、適用于什么場景?
  • 祖 -> 孫 的通信方式有哪些?各自的優缺點是什么、適用于什么場景?
  • 孫 -> 祖 的通信方式有哪些?各自的優缺點是什么、適用于什么場景?
  • 任意組件的通信方式有哪些?各自的優缺點是什么、適用于什么場景?

如何復用代碼

最后,我們還要探索一個話題,就是如何復用代碼。

組件化也是復用代碼的一種方式,它復用的是整個組件的代碼,這個組件可以用在很多地方,不需要重新寫一個新的組件。

除了這個之外,我們還需要學習更細粒度的復用代碼,比如如何復用某些邏輯,可以在多個組件中使用?

如果按照可被復用的代碼量級來劃分層級的話,我們有如下層級:

  • 函數:某個函數的代碼可以在任何需要的地方被調用
  • 功能邏輯:特定功能的邏輯代碼,可以被復用到各個組件,一般是多個函數的關聯集合,或者是一個基類
  • 組件:某個組件可以在任何需要的地方被加載使用
  • 模塊:整個業務功能模塊被復用到有需要的頁面中,通常是由多個組件組合而成
  • 頁面:整個頁面被復用到站點的業務流程之中

在學習 UI 框架時,我們不僅要學習組件層級的代碼復用,還需要學習功能邏輯層級的代碼復用。

功能邏輯層級的代碼復用是在多個組件中復用代碼,因此這一塊是跟組件化的實現方案強關聯的,因此我們在學習前端 UI 框架時,不能只學習組件化的使用方法,還需要進一步學習如何在多個組件之中復用代碼的技巧,這樣才能讓我們寫出更高質量的代碼。

好了,現在你知道,在學習 React/Vue 的時候,我們應該學什么了嗎?

只要你把上面我說到的這些點都學會了,你就真正學會 React/Vue 了。

----------------【END】----------------

如果你是真心喜歡前端,并相信成長,想要提升自己的話,歡迎加入之道前端學習圈子。

戳這里 免費獲取 之道前端的學習資料和專屬服務。

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

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

相關文章

asp.net core mvc模塊化開發

razor類庫 新建PluginController using Microsoft.AspNetCore.Mvc;namespace RazorClassLibrary1.Controllers {public class PluginController : Controller{public IActionResult Index(){return View();}} }Views下Plugin下新建Index.cshtml {ViewBag.Title "插件頁…

2024年MathorCup數學建模C題物流網絡分揀中心貨量預測及人員排班解題全過程文檔加程序

2024年第十四屆MathorCup高校數學建模挑戰賽 C題 物流網絡分揀中心貨量預測及人員排班 原題再現: 電商物流網絡在訂單履約中由多個環節組成,圖1是一個簡化的物流網絡示意圖。其中,分揀中心作為網絡的中間環節,需要將包按照不同流…

鴻蒙Flutter開發故事:不,你不需要鴻蒙化

在華為牽頭下,Flutter 鴻蒙化如火如荼進行,當第一次看到一份上百個插件的Excel 列表時,我也感到震驚,排名前 100 的插件赫然在列,這無疑是一次大規模的軍團作戰。 然后,參戰團隊魚龍混雜,難免有…

Unity音頻混合器如何暴露參數

音頻混合器是Unity推薦管理音效混音的工具,那么如何使用代碼對它進行管理呢? 首先我在AudioMixer的Master組中創建了BGM和SFX的分組,你也可以直接用Master沒有問題。 這里我以BGM為例,如果要在代碼中進行使用就需要將參數暴露出去…

Vue項目與云管平臺Nginx部署筆記

Vue項目與云管平臺Nginx部署筆記 一、項目架構說明 footAdmin云管前端 Vue2 Webpack 構建,部署路徑:/usr/share/nginx/html/footAdmin 使用npm run build生成/dist目錄,然后將dist目錄下面的所有文件,上傳到虛擬機/usr/share/n…

java常用數據轉換

1. List與數組互轉 ArrayList<String> list new ArrayList<>(); String[] array list.stream().toArray(String[]::new); String[] array1 {"apple", "banana", "orange"}; List<String> list1 Arrays.stre…

JAVA學習--java數組--打印稀疏數組和稀疏數組的還原

1.題目描述 2.代碼實現 打印二維數組 public class test04 {public static void main(String args[]){//1.創建一個二維數組11*11&#xff0c;0代表沒有棋子&#xff0c;1代表黑&#xff0c;2代表白棋int[][] array1new int[11][11];array1[1][2]1;array1[2][3]2;//輸出原…

Java 標準注解(內置注解+元注解)的詳細說明及使用場景

以下是 Java 標準注解&#xff08;內置注解&#xff09;的詳細說明及使用場景&#xff1a; 1. 核心標準注解 (1) Override 用途&#xff1a;標記一個方法覆蓋父類的方法或實現接口的抽象方法。約束&#xff1a; 若方法未正確覆蓋/實現&#xff0c;編譯器會報錯。不能用于字段…

使用Python調用Jenkins Api之獲取構建日志使用說明文檔

簡介 通過 Python 腳本自動化獲取 Jenkins 構建日志&#xff0c;可以實現日志分析、錯誤監控、報告生成等功能。本文檔將介紹以下方法&#xff1a; Python-Jenkins 庫&#xff1a;官方推薦的 Python 客戶端庫 日志分頁與流式處理&#xff1a;應對大日志文件場景 準備工作 …

Day20-前端Web案例——部門管理

目錄 部門管理1. 前后端分離開發2. 準備工作2.1 創建Vue項目2.2 安裝依賴2.3 精簡項目 3. 頁面布局3.1 介紹3.2 整體布局3.3 左側菜單 4. Vue Router4.1 介紹4.2 入門4.3 案例4.4 首頁制作 5. 部門管理5.1部門列表5.1.1. 基本布局5.1.2 加載數據5.1.3 程序優化 5.2 新增部門5.3…

Android java 設計封裝增強型WebView組件

Android java 設計封裝增強型WebView組件&#xff08;兼容Android 4.4&#xff09; * 特性&#xff1a; * 1. 全生命周期管理 * 2. 智能硬件加速 * 3. 鏈式配置API * 4. 安全下載管理 * 5. 全屏視頻支持 public class EnhancedWebView extends WebView {private CustomWebChrom…

vue 點擊放大,圖片預覽效果

背景&#xff1a; 在使用vue框架element組件的背景下&#xff0c;我們對圖片的展示需要點擊放大(單張)&#xff1b;如果是多張圖片&#xff0c;要支持左右滑動查看多張圖片(多張)。 單張圖片放大&#xff0c;el-image圖片組件&#xff0c;或者原生的img標簽。 多張圖片放大&…

HTTP代理的全面解讀:什么是HTTP代理?HTTP代理的工作原理

在互聯網大潮中&#xff0c;每一個請求和返回數據的背后&#xff0c;都離不開傳輸協議的支持&#xff0c;而HTTP協議無疑是最熟悉的網絡通信基礎之一。當我們談到HTTP代理時&#xff0c;它不僅讓瀏覽網絡變得更高效&#xff0c;也為數據采集以及全球性遠程任務提供了解決方案。…

學習筆記--基于Sa-Token 實現Java項目單點登錄+同端互斥檢測

目錄 同端互斥登錄 單點登錄SSO 架構選型 模式二: URL重定向傳播 前后端分離 整體流程 準備工作 搭建客戶端 搭建認證中心SSO Server 環境配置 開放認證接口 啟動類 跨域處理 同端互斥登錄 同端互斥登陸 模塊 同端互斥登錄指&#xff1a;同一類型設備上只允許單地…

本地生活服務APP開發,市場發展全新商業機遇

隨著移動互聯網的快速發展&#xff0c;人們的消費和生活習慣發生了巨大改變&#xff0c;本地生活服務市場迎來了發展爆發期&#xff01;從外賣、團購等&#xff0c;人們越來越依賴通過手機APP解決日常生活中的各種需求。對于企業而言&#xff0c;一款完善、多樣、便捷的本地生活…

當科技業成為系統性壓榨的絞肉機

深夜的硅谷辦公室依然燈火通明&#xff0c;鍵盤敲擊聲此起彼伏。一位程序員在Slack上收到主管的緊急需求&#xff1a;“這個功能明早必須上線。”他苦笑一聲&#xff0c;關掉手機里名為“緩解焦慮”的冥想App——這已是本周第三次被迫服用公司提供的“心靈解藥”。此刻&#xf…

代碼隨想錄算法訓練營第五十六天 | 108.冗余連接 109.冗余連接II

108. 冗余連接 卡碼網題目鏈接&#xff08;ACM模式&#xff09;(opens new window) 題目描述 有一個圖&#xff0c;它是一棵樹&#xff0c;他是擁有 n 個節點&#xff08;節點編號1到n&#xff09;和 n - 1 條邊的連通無環無向圖&#xff08;其實就是一個線形圖&#xff09;…

什么是索引?為什么要使用B樹作為索引數據結構?

MySQL的事務特性 1.原子性:原子性就是這個事件要么執行完,要么沒執行,不會存在中間狀態,與C中華那個加鎖避免多線程競爭是一個道理; 2.一致性:保持事件的操作對象雙方某數據之和是不變的,就以轉賬為例,A轉給B100塊,那么A的余額多100,B的余額就必須少100; 3.隔離性:隔離就是獨…

pyqt5報錯:qt.qpa.plugin: Could not find the Qt platform plugin “xcb“(已解決)

我在使用pyqt庫的時候報錯&#xff1a; qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in \ "/mnt/private_disk/anaconda3/envs/aot-manip/lib/python3.8/site-packages/PyQt5/Qt5/plugins/platforms" even though it was found. This ap…

AI大模型全攻略:原理 · 部署 · Prompt · 場景應用

?? AI大模型全攻略:原理 部署 Prompt 場景應用 本文從基礎原理到實踐部署,再到 Prompt 工程與典型應用案例,全方位解析 AI 大模型的學習路徑與使用方法,適合開發者、產品經理、技術愛好者等不同背景讀者。 ?? 一、什么是 AI 大模型? AI 大模型(Large Language Mo…