讀《前端架構(gòu)設(shè)計(jì)》 兼談架構(gòu)與框架

《前端架構(gòu)設(shè)計(jì)》

架構(gòu)?框架?傻傻分不清楚

在中文里面,“架構(gòu)”和“框架”只有一字之差,你要問個(gè)普通人“架構(gòu)”和“框架”有什么區(qū)別,可能十有八九是說不清楚的。那么在IT圈里,這個(gè)問題的答案就很清楚嗎?搜一搜“架構(gòu) 框架”關(guān)鍵字,排在前面的搜索結(jié)果幾乎都是“架構(gòu)和框架的區(qū)別”,可見在中文世界里面這個(gè)問題是有很多人有疑惑的,否則也沒必要寫文章來澄清概念。

那么Architecture(架構(gòu))和 Framework (框架)在英文世界里面意思就很清楚嗎?搜索 Framework vs Architecture ,會(huì)發(fā)現(xiàn)也有大量 What is the difference between framework and architecture? 這類的話題,可見 Architecture 與 Framework 的區(qū)別在英文世界里也是一個(gè) confusion 。

所以在讀《前端架構(gòu)設(shè)計(jì)》這本書的時(shí)候,我發(fā)現(xiàn)還真有必要把“架構(gòu)”和“框架”的概念和區(qū)別搞搞清楚。


什么是架構(gòu)?

前端架構(gòu)是一系列工具和流程的集合,旨在提升前端代碼的質(zhì)量,并實(shí)現(xiàn)高效、 可持續(xù)的工作流。

上面這段是在本書第一章的第一句話,不知道你能否從這句話里看出“架構(gòu)”是個(gè)什么意思?反正我看過這句后依然是很懵懂的。

當(dāng)思考前端架構(gòu)師的角色時(shí),我總會(huì)聯(lián)想到傳統(tǒng)的建筑設(shè)計(jì)師。

接下來的這句話,把架構(gòu)師和建筑設(shè)計(jì)師聯(lián)系起來,有那么點(diǎn)意思了,架構(gòu)師是做設(shè)計(jì),建筑設(shè)計(jì)師也是做設(shè)計(jì),有點(diǎn)相通。再來看一看原文是怎么寫的 ——

When I think about the role of a?frontend architect, I always think about the characteristics that it shares with that of a?traditional architect.

對(duì)比“前端架構(gòu)師”(frontend architect)和“傳統(tǒng)的建筑設(shè)計(jì)師”(traditional architect)的英文原文,我們會(huì)立即豁然開朗 —— 原來“架構(gòu)師”(architect)就是 “建筑設(shè)計(jì)師”(architect)嘛!既然“架構(gòu)師”就是“建筑設(shè)計(jì)師”,那么架構(gòu)(architecture)和建筑學(xué)(architecture)也就可以對(duì)應(yīng)起來了!

我們看看維基百科是怎么給建筑學(xué)做定義的 ——

The style of?design and method?of construction of buildings and other physical structures.

翻譯過來:建筑學(xué)是建筑物或其他具體構(gòu)造物的設(shè)計(jì)風(fēng)格與建造方式。

再看看計(jì)算機(jī)領(lǐng)域里的架構(gòu)是怎么定義的 ——

Computer architecture is a set of?rules and methods?that describe the functionality, organization, and implementation of computer systems.

翻譯過來:計(jì)算機(jī)架構(gòu)是描述計(jì)算機(jī)系統(tǒng)的功能,組織和實(shí)現(xiàn)的一套規(guī)則和方法。

簡(jiǎn)而言之,計(jì)算機(jī)世界里的架構(gòu)就是現(xiàn)實(shí)世界里的建筑學(xué),都是規(guī)則方法論以及具體的實(shí)現(xiàn)藍(lán)圖。


前端架構(gòu)師的職責(zé)

有了前面的概念鋪墊,接下來的東西就好理解了

在建設(shè)過程中,建筑設(shè)計(jì)師需要設(shè)計(jì)和規(guī)劃方案,并且跟進(jìn)施工過程。這與前端架構(gòu)師的工作有著異曲同工之妙,不同的是后者建造的是網(wǎng)站,而不是建筑物。比起澆筑混凝土, 建筑設(shè)計(jì)師會(huì)在設(shè)計(jì)工程構(gòu)圖的工作上傾注更多的精力。同理,相比編寫具體的代碼,前端架構(gòu)師更專注于開發(fā)工具和優(yōu)化流程。

歸納起來,前端架構(gòu)師的職責(zé)就是:(1)體系設(shè)計(jì),建立系統(tǒng)設(shè)計(jì)的規(guī)范,清晰描繪產(chǎn)品和代碼的最終形態(tài) ;(2)工作規(guī)劃,設(shè)計(jì)出能流暢運(yùn)轉(zhuǎn)的系統(tǒng),制定完整開發(fā)工作流;(3)監(jiān)督跟進(jìn),能夠持續(xù)地優(yōu)化工作流程,保證項(xiàng)目高效率完成。

那么前端架構(gòu)師是不是只要做好管理工作,不再需要寫代碼呢?作者的答案是否定的 —— 前端架構(gòu)師不僅要寫更多代碼,更要會(huì)用多種編程語言,還要使用大量的工具。代碼量并未減少,只是代碼的讀者發(fā)生了改變。前端開發(fā)人員面向終端用戶寫代碼,而前端架構(gòu)師面向的則是團(tuán)隊(duì)里的開發(fā)人員。


架構(gòu)與框架

前面寫了一堆,為的是搞清楚什么是架構(gòu)(architecture)和架構(gòu)師(architect),現(xiàn)在再厘清什么是框架(framework)就容易多了。

我們先看看建筑學(xué)(architecture)里的“框架”是什么意思 ——框架指建筑工程中,由梁、柱等聯(lián)結(jié)而成的結(jié)構(gòu)。

比如,建筑師(architect)設(shè)計(jì)好了雷峰塔的外觀 ——?

雷峰塔

看上去像是中國(guó)古代建筑里典型的磚木結(jié)構(gòu),但具體怎么建就是涉及選框架(framework)的問題了。其實(shí)最后重建的雷峰塔并沒有采用傳統(tǒng)的磚木結(jié)構(gòu)框架,而是用的鋼筋混凝土框架,甚至里面還有電梯!

回到本書的內(nèi)容里,前端架構(gòu)師除了要設(shè)計(jì)網(wǎng)站的外觀(HTML、CSS),還要負(fù)責(zé)Javascript的框架(framework)選型,你可以根據(jù)需要去選 Angular、React、Vue…… 當(dāng)然,沒有哪個(gè)JavaScript框架是完美的,隨著技術(shù)的發(fā)展,任何框架(framework)也都會(huì)有過時(shí)的一天!


總結(jié)

《前端架構(gòu)設(shè)計(jì)》一書讓我們了解什么是前端架構(gòu),而前端架構(gòu)師的工作又是什么,也讓我們能夠厘清前端架構(gòu)和前端框架之間的關(guān)系。

如果這是你第一次制定架構(gòu)計(jì)劃,請(qǐng)記住你將要迭代很多次!不要把你所有的希望 寄托于一個(gè)單獨(dú)的解決方案、框架或者平臺(tái),除非它一次又一次地被證明是有效的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容