經歷過很多場面試,以及對自己所做專案的思考與積累。對於元件化的開發有了一點點理解。 其實開發一個專案,就類似與做一個樂高玩具。樂高由不同的積木塊拼成,每個積木塊可以和不同的積木塊連線。 而且積木塊與積木塊之間沒有影響。一個蘿蔔一個坑,只要這個坑你能填進去,你就適合。 而我們開發一個專案的時候,就要規劃好那些功能.在前端來說,就是哪些標籤,哪些CSS,哪些JS能夠抽象成一個積木塊。 在程式設計開始後,再不斷的改進這個積木塊所需要用到的資料,事件。積木塊之間的影響如何儘量的解耦。 父元件子元件的資料如果傳遞和更改。
如何實現元件化
元件在spa的實現
- 通過jsx或者template,在檔案中定義好css,js。
- 此元件需要那些屬性。屬性是通過props由上級傳過來,還是直接定義在data,又或者是定義在狀態管理中。
- 資料是否需要持久化,快取?因為spa在一次重新整理之後,會初始化(根據你寫的程式碼)資料狀態,所以我們需要記錄這些資料, 這些資料是存在 localstorage還是cookie,使用storage時是否需要考慮到向後相容。
- 資料的改變,是提交至狀態管理,還是通過子元件事件提交,父元件監聽相應的事件去改變這個資料。
- 某個功能是否有必要將它抽象成元件,主要看複用需求,因為轉換成元件,往往需要改變很多頁面的結構,以及資料,事件。
- 元件的可擴充性,如果需要這個元件完成新加的需要,改動最小。
元件在JQuery中的實現
- 先寫好這個元件的樣式,以及功能。
- 建立一個建構函式,包含元件例項的建立,將1中的html程式碼轉成字串進行拼接。或者DocumentFragment物件。
- 繫結事件。
- 將需要用到的資料,用過事件的引數傳遞。
- 插入到指定的位置,
append
。
物件導向開發
在進行元件化的開發時,其實就已經有物件導向開發的思想,你就能用到建構函式、prototype、繼承
等物件導向開發的特性。
但是這個步驟不需要強制的使用到所有的場景,因為有時候抽象元件時你花費的時間,以及元件的健壯性都不能讓你滿意。
按照需求去敲程式碼,思考。才是最適合開發者的方式。
而且,一種開發思想的建立,是需要程式碼量,需要自我驅動的思考。