The Frameworks simplify the Development for Engineers and this is my attempt to simply the Behind-The-Scenes functioning of the ReactJS.
I've started out with ReactJS. Yup, I really have. It's like a dream being delay by 2 years when I was passionate about UI / UX Designing and Front-End Development before I dived into Data Science. ( I still am as passionate as I was 2 years ago.)
I'm now an Intern at a company ( that call themselves a startup because, its culture is more of a start-up's than that of company's ) and today, on my first day, I literally had nothing to do since, my TL ( Team Lead ) was not coming to the office as he was occupied with some meeting.
Did I let he time slip off my hands. Absolutely not.
The probability of me getting a task / project to put my Data analytics skills to test was fairly low. Hence I resorted to get my hands dirty in development. I could sense that this might be the best time to started with ReactJS.
React is a verb ( pun intended ). But in the context of development technologies,"The library for web and native user interfaces", claims the official website of ReactJS.
Now if you've been around the development ecosystem, you must have heard about other 2 competitors or rather the siblings of ReactJS, which are Angular and VueJS.
Here's a short comparison of the 3 of the most popular Front-End technologies.
Core Concept | Library focused on UI | Full-fledged framework | Progressive framework |
---|---|---|---|
Data Binding | One-way data flow | Two-way data binding | Two-way data binding (optional) |
Component Structure | Custom components | Directives and components | Components |
Learning Curve | Moderate | Steep | Gentle |
Performance | High (Virtual DOM) | Can be slower due to two-way data binding | High (Optimized rendering) |
Scalability | Excellent, suitable for large-scale apps | Strong support for large-scale enterprise apps | Good scalability, but might require additional libraries for complex projects |
Community and Ecosystem | Largest community, rich ecosystem | Large community, strong ecosystem | Growing community, good ecosystem |
Flexibility | High, can be used with other libraries/frameworks | Less flexible due to rigid structure | Flexible, can be used incrementally |
以下是您使用時會遇到的問題:
維護大型應用程式的困難:
純 HTML 和 JS 缺乏組織程式碼的結構化方法。
複雜的應用程式可能會導致事件偵聽器和腳本檔案中邏輯和 UI 操作錯綜複雜。
隨著應用程式的增長,這使得理解、修改和調試程式碼變得困難。
低效率的 DOM 操作:
直接在 JS 操作 DOM 效率很低。
每次狀態變更都可能觸發 HTML 結構的完全重新渲染,即使是小的 UI 更新也是如此。
隨著應用程式複雜性的增加,這可能會導致效能瓶頸。
有限的可重複使用性:
使用純 HTML 和 JS 建立可重複使用的 UI 元件可能很麻煩。
您最終可能會在應用程式的不同部分複製和貼上程式碼片段。
這使得保持一致性和高效實施變更變得困難。
複雜的狀態管理:
使用純 HTML 和 JS 來管理應用程式的狀態(控制 UI 行為的資料)變得很困難。
追蹤資料變更及其相應的 UI 更新可能會變得混亂且容易出錯,尤其是對於複雜的資料流。
ReactJS 透過提供基於元件的架構、用於高效更新的虛擬 DOM 以及用於管理複雜 UI 和應用程式狀態的豐富生態系統來解決這些限制。
提高了可維護性:
增強的性能:
程式碼可重複使用性:
當我創建第一個組件時,我問自己,「這到底是什麼」?是 HTML 還是 JS?
我透過
我嘗試在非 React 專案的 JS 檔案中編寫 HTML,猜猜結果不太順利。
然後我了解到這種特殊的語法(類似於 JS 檔案內部的 HTML)被稱為 JSX JavaScript XML,是JavaScript 的擴充功能。
如果瀏覽器能理解的程式碼最終是純HTML和JS,那就意味著在我們寫的JSX(輕鬆建立複雜應用程式的語法糖)上進行了一些操作。
這個幕後操作本身稱為建造過程。
建置流程的高階想法是將您的開發程式碼轉換為準備在生產環境中部署的最佳化版本。
雖然具體的工具和配置可能會根據技術堆疊的不同而有所不同,但建置過程的一般概念和目標普遍適用於前端 Web 開發。
我們了解到,高階思想保持不變,但 React 建置過程中的幾個階段如下:
像 Webpack 這樣的打包器會取得所有這些單獨的文件,並將它們組合成數量較少的最佳化套件。
翻譯:
縮小:
優化:
生產模式:
相較之下,生產模式著重於透過啟用縮小、tree-shaking 和其他效能增強來進行最佳化。
react-scripts 是 Create React App (CRA) 使用的內部套件,用於處理 React 專案中的幕後功能。
大多數時候開發者不會直接交互,但是對於開發效率來說卻至關重要
這是react-scripts 的職責:
react-scripts 執行的 3 個最重要的任務如下,我們將詳細了解:
捆綁:
翻譯:
縮小:
這是縮小的工作原理:
刪除不需要的字元:
縮短變數和函數名稱:
刪除評論:
這是僅1天的學習總結。
如果我使用 GenAI 工具,我就能建構出更多的東西。我以任何方式使用 GenAI 工具,但都是為了學習目的。
我相信提出這組正確的問題,然後真正深入地理解這些概念將使您與自動化開發人員區分開來。
在面試中,我們尋求的是對概念的理解和清晰度,而不是你的編碼速度,因為無論哪種方式,它都會在一定程度上實現自動化。
因此,你成為一名優秀的軟體工程師的唯一 X 因素在於你的知識,至少能夠驗證和驗證 GenAI 模型的結果是否滿足你的技術需求。
如果您覺得我的內容有價值或有任何回饋,
請聯絡我的以下社交媒體帳號,您可以在我的個人資料和以下內容中找到這些帳號:
領英:https://www.linkedin.com/in/shrinivasv73/
推特(X):https://twitter.com/shrinivasv73
Instagram:https://www.instagram.com/shrinivasv73/
電子郵件:shrinivasv73@gmail.com
?我是 Shrinivas,結束了!
The above is the detailed content of What is a Build Process in React ( or in any framework for that matter? ). For more information, please follow other related articles on the PHP Chinese website!