前端是否適合使用面向?qū)ο蟮姆绞骄幊蹋?/strong>
這里是丁哥開講,作為一名從事20多年軟件開發(fā)的資深程序員,我來說一下我的體會(huì)。
前端開發(fā)當(dāng)然可以使用面向?qū)ο缶幊谈拍睢T谶@個(gè)基礎(chǔ)上我在著重強(qiáng)調(diào)一下,面向?qū)ο缶幊蹋粌H對(duì)前端非常有用,對(duì)后端當(dāng)然也是非常有用的。我們這個(gè)問題就專門針對(duì)前端來談一談。
前端我們關(guān)注的是界面的設(shè)計(jì)。那么一個(gè)界面之中會(huì)分為幾個(gè)區(qū)域,每個(gè)區(qū)域里面又分為幾個(gè)子區(qū)域。這些大大小小的區(qū)域我們都可以定義為一個(gè)對(duì)象,俗稱組件。這些組件可能會(huì)有一些共性,比如說都會(huì)有初始化函數(shù)和釋放函數(shù)。那么我們就可以把這些共性的方法放到一個(gè)基本組件里面,俗稱基類。
基本組件可以定義為抽象的組件也可以定義為實(shí)際使用的組件。基本的方法也可以手工調(diào)用也可以靠整個(gè)架構(gòu)來進(jìn)行自動(dòng)的調(diào)用。如果你用過angular,vue, react這些架構(gòu)的話,我相信你知道我在說什么。
除了組件的設(shè)計(jì)和定義以外,在前端也需要定義一些非界面性的類,或者其他的邏輯單元,這些非界面的類和邏輯單元,用來存儲(chǔ)前端的數(shù)據(jù)和邏輯計(jì)算。如果對(duì)這一部分使用面向?qū)ο笞兂筛拍畹脑挘瑫?huì)降低程序的復(fù)雜度,增加程序的可維護(hù)性和可擴(kuò)展性。
如果你使用typescript, 這樣的面向?qū)ο缶幊陶Z言來開發(fā)前端的話,那自然的,你已經(jīng)有面向?qū)ο缶幊痰母拍盍恕_@門語言是Javacript的超集。如果你有面向?qū)ο缶幊痰慕?jīng)驗(yàn),學(xué)習(xí)學(xué)好這門語言根本不在話下。
即使你在使用JavaScript, 你也可以通過函數(shù)的方法來定義原型基類,然后通過在擴(kuò)展的函數(shù)里面定義擴(kuò)展原型,這樣你新的函數(shù)既可以享有原有函數(shù)的所有方法也可以添加上新的功能實(shí)現(xiàn)這實(shí)際上就是父類和子類的一個(gè)概念。
實(shí)際上所有的typescript代碼,最后在運(yùn)行的時(shí)候都需要編譯成JavaScript。
也就是說所有的typeacript面向?qū)ο蟮木幊谭椒ǎ诰幾g后的JavaScript, 你都可以找到對(duì)應(yīng)的例子。
說完了 JavaScript相關(guān)的知識(shí), 再來說一下前端開發(fā)離不開的樣式語言。現(xiàn)在比較流行的樣式語言是sass家族, 諸如less, scss。他們最終都會(huì)編譯成傳統(tǒng)的CSS語言。所不同的是這些流行的樣式語言提供了面向?qū)ο蟮木幊谈拍睢T趯戇@些樣式語言的時(shí)候,可以像面向?qū)ο笳Z言一樣使用基本的類,擴(kuò)展的類,基本的函數(shù)和擴(kuò)展的函數(shù)。與此同時(shí),這些新的樣式語言都支持?jǐn)?shù)結(jié)構(gòu)。那么數(shù)結(jié)構(gòu)本身就有子節(jié)點(diǎn),父節(jié)點(diǎn)的概念。這是文檔模型DOM本身的對(duì)應(yīng)關(guān)系。
這一步也就引申到了html語言本身。這門標(biāo)記語言自身作為一棵樹存在。通過這棵樹你可以追溯到你想要的那一部分內(nèi)容。這個(gè)過程本身就是把整個(gè)文檔作為一個(gè)樹對(duì)象來進(jìn)行操作的。
好了,以上是我作為一名資深程序員的個(gè)人見解,請(qǐng)?jiān)谙路搅粞愿嬖V我你的想法,我們可以繼續(xù)探討,感謝關(guān)注丁哥開講我們下次再見。