成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

前端進階之路: 前端架構設計(1)-代碼核心

baishancloud / 3604人閱讀

摘要:可能很多人和我一樣首次聽到前端架構這個詞第一反應是前端還有架構這一說呢在后端開發(fā)領域系統(tǒng)規(guī)劃和可擴展性非常關鍵因此架構師備受重視早在開發(fā)工作啟動之前他們就被邀請加入到項目中而且他們會跟客戶討論即將建成的平臺的架構要求使用還什么技術棧內(nèi)容類型

可能很多人和我一樣, 首次聽到"前端架構"這個詞, 第一反應是: "前端還有架構這一說呢?" 在后端開發(fā)領域, 系統(tǒng)規(guī)劃和可擴展性非常關鍵, 因此架構師備受重視, 早在開發(fā)工作啟動之前, 他們就被邀請加入到項目中, 而且他們會跟客戶討論即將建成的平臺的架構要求, 使用還什么技術棧? 內(nèi)容類型是什么? 這些內(nèi)容如何被創(chuàng)建?軟件架構師的職責就是要保證項目中每一步都在總體架構的指導下進行, 而不會隨機決定.

現(xiàn)在的前端領域, 隨著JS框架, UI框架和各種庫的豐富, 前端架構也變得十分的重要. 如果一個大型項目沒有合理的前端架構設計, 那么前端代碼可能因為不同的開發(fā)人員隨意的引入各種庫和UI框架, 導致代碼量變得異常臃腫, 最終結果可能是代碼變得無法維護, 頁面性能低下,不得已只能推翻重構. 所以我們需要在項目開始前, 同樣的需要對前端代碼進行架構, 一旦前端架構師設計出所有前端開發(fā)人員都要遵循的檢驗機制, 建立起系統(tǒng)設計的規(guī)范, 那么項目就擁有了可以衡量代碼質(zhì)量的標準, 前端開發(fā)人員也能享受到更高效的工作流. 所以, 前端架構的定義可以用以下一句話來總結:

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

本系列的前端架構文章, 將分別圍繞前端架構的四個核心展開, 分別是代碼, 流程, 測試, 文檔.

前端架構的四個核心 (一) 代碼

歸根到底, 所有的網(wǎng)站都是由一堆文本文件和資源文件組成的. 當我們面對制作網(wǎng)站所產(chǎn)生的大量代碼時, 就會發(fā)現(xiàn)為代碼和資源設定一個期望是多么重要. 在代碼部分, 我們會專注于如果實現(xiàn)系統(tǒng)架構中的HTML, CSS, JavaScript.

(二) 流程

現(xiàn)在早已過了FTP上傳文件的時代, 那么現(xiàn)在重要的是思考怎么用工具和流程構建一個高效且避免出錯的工作流. 工作流變得越來越復雜, 那些用于它們的工具也同樣如此. 這些工具在提高生產(chǎn)力, 加快效率和保持代碼一致性上帶來了驚人的效果, 但也伴隨著過度工程化和抽象化的風險. 所以, 現(xiàn)有的工作流是需要改變的.

(三) 測試

要構建一個可擴展和可持續(xù)優(yōu)化的系統(tǒng), 必須保證新代碼和老代碼能夠很好的兼容. 我們的代碼不會獨立存在, 它們都是大型系統(tǒng)中的一部分. 創(chuàng)建覆蓋面廣泛的測試方案, 能確保老代碼還能正常運作.

(四) 文檔

一般而言, 如果不是團隊中的重要成員要離開, 我們幾乎都不會意識到文檔的重要性. 等到那個時候, 大家將不得不停下手頭的工作, 優(yōu)先編寫所有的文檔. 作為前端機構師, 你要善于在項目開發(fā)的同時編寫良好的文檔.

代碼核心 (一) HTML

在前端的架構中, HTML作為頁面的基礎是十分重要的. 如果初始的HTML寫得很爛, 將要寫出很多不必要的CSS和JavaScript來彌補. 反之, 如果如果初始的HTML寫得足夠好, 就能寫出根據(jù)可擴展性和可維護的CSS和JavsScript.

首先我們來看一些初級的前端工程師可能寫出的HTML代碼:

這類"div亂燉"的代碼, 是很多初級的前端為應付切頁面的工作寫出來的. 只是單純?yōu)榱诉€原psd圖, 而完全你不考慮HTML的可讀性和可維護性.

隨后, 在HTML5之后, 標簽的語義化受到了大家的重視, 采用語義化的標簽, 不僅增加了代碼的可讀性, 也有利于SEO. HTML語義化標簽的使用,這也是在前端架構中需要考慮到的,下面我們來看一下使用語言化標簽寫的這段代碼:

 

但是如果我們的頁面的菜單有數(shù)10項的時候, 就會額外添加

  • 菜單N
  • , 這類重復的工作量完全可以交給Mustache這類模板引擎來解決, 已Vue中的模板引擎語法來寫HTML, 會減少很多的工作量 :

    
    
    

    你也可以使用Handlebars, Jade, artTemplate各種模板引擎到你的項目中, 當然這些都是需要取決于前端架構師前期的所選擇的技術選型. 做為前端架構師, 需要評估HTML產(chǎn)生的過程, 你對內(nèi)容的順序, 使用的元素和CSS類名有多大的控制權? 這些元素在將來改動起來會有多大難度? 模板的易用性? 你可以通過系統(tǒng)做出更改, 還是需要手動處理? 通過回答這些問題, 可能會顛覆你自己構建HTML和CSS的方法.

    (二) CSS

    構建CSS現(xiàn)在有很多成熟的方法, 例如使用新的命名空間, 擴充數(shù)據(jù)屬性或在JavaScript里面定義CSS. 這些方法你可以從BootStrap, ElementUI這類UI框架中找到影子. 下面, 介紹3種比較常用的方法.

    1.OOCSS方法(Object-Oriented CSS 面向?qū)ο蟮腃SS)

      

    標題

    詳細內(nèi)容

    上面這段代碼就展示了如何使用OOCSS方法創(chuàng)建一個可切換的HTML代碼, OOCSS有兩個主要的原則:

    分離結構和外觀

    分離容器和內(nèi)容

    分離結構和外觀
    這里的toggle用來控制結構, simple用來控制外觀,這就是分離結構和外觀的表現(xiàn). 這樣可以實現(xiàn)外觀的復用, 例如當前的simple皮膚使用直角, 而complex皮膚可能使用圓角, 還加了陰影.

    分離容器和內(nèi)容
    這里使用toggle-title就是分離容器和內(nèi)容的表現(xiàn), 無論toggle-title的容器是用的

    還是

    或者是
    , 一旦加上了toggle-title這個類名, 那么該容器均已該類名所定義的樣式呈現(xiàn)內(nèi)容.

    2.SMACSS方法(Scalable and Modular Architecture for CSS 模塊化架構的可擴展的CSS)

    標題2

    詳細內(nèi)容

    上面的這段代碼基本展示了如何使用SMACSS方法,在我個人的理解中, OOCSS更多的其實是提供了一種CSS構建思想, 該思想要求將結構和外觀分離, 將容器和內(nèi)容分離. 但是并沒有提供一套完整的CSS構建規(guī)范, 而SMACSS是提供了一套樣式系統(tǒng), 該樣式系統(tǒng)有5個具體類別:

    基礎: 如果不添加CSS類名, 標記會以什么外觀呈現(xiàn)

    布局: 把頁面分成一些區(qū)域

    模塊: 設計中的模塊化, 可復用的單元

    狀態(tài): 描述在特定的狀態(tài)或情況下, 模塊或布局的的顯示方法

    主題: 一個可選的視覺外觀層, 可以讓你更換不同主題

    基礎

    //base.css
    body, form {
        margin: 0;
        padding: 0;
    }
    
    a {
        color: #039;
    }
    
    a:hover {
        color: #03F;    
    }

    在基礎代碼中, 應該規(guī)定的是頁面中的一些通用樣式,例如將bodymarginpadding設置為0 , 設置a標簽的顏色等. 類似于某些人常用的initial.css文件.

    布局

    //layout.css
    #header, #article, #footer {
        width: 960px;
        margin: auto;
    }
    
    #article {
        border: solid #CCC;
        border-width: 1px 0 0;
    }

    這里的布局指的是頁面中一些通用的布局組件, 例如頭部, 側(cè)邊欄, 主體和底部這些. 這些布局組件會在多個頁面通用, 所以最好把其放入到一個css文件中. 方便復用. 在SMACSS中, 推薦將布局容器的頂級標簽設置為id, 這樣確保了每個頁面中擁有唯一持有該樣式的布局容器, 也方便其css和js選擇器的使用. 當然, 你也可以使用一個唯一的類名替代id.

    模塊

    //module.css
    
    //module1
    .module1 > h2 {
        padding: 5px;
    }
    
    .module1 span {
        padding: 5px;
    }
    
    //module2
    .module2 > h2 {
        padding: 10px;
    }
    
    .module2 span {
        padding: 10px;
    }

    模塊是指頁面中可以多帶帶分離并提取出來復用的部分, 例如導航條, 側(cè)邊欄, 對話框或一些widget等. 所以, 模塊禁止使用id, 而應該采用類名的方式.

    狀態(tài)

    State 負責定義元素不同的狀態(tài)下,所呈現(xiàn)的樣式. 上面的一段代碼中,已is-開頭的就是表示狀態(tài)的類名, is-collapsed, is-error等類名不會多帶帶使用, 而是和前面的布局模塊一起使用. 下面的代碼, 就是在tab欄模塊和狀態(tài)一起使用:

    //state.css
    .tab {
        background-color: purple;
        color: white;
    }
    
    .is-tab-active {
        background-color: white;
        color: black;
    }

    主題

    // module-name.css
    .mod {
        border: 1px solid;
    }
    
    //theme.css
    .mod {
        border-color: blue;
    }

    這里的主題理解為皮膚更加合適, 已上面的代碼為例, 在module-name.css中定義了邊框除顏色之外的樣式, 在theme.css文件中定義了該邊框的顏色, 這樣的好處就是, 如果定義其他顏色的類名去覆蓋這些有顏色的樣式, 那么就可以通過類名去切換皮膚的顏色. 達到更換主題的效果.

    更多關于SMACSS的方法, 請參考: https://smacss.com/book
    

    3.BEM方法(Block Element Modifier 塊元素修飾符)

    標題3

    ...
    ...

    BEM是由Yandex提出的給一個CSS命名方法, 該方法要求使用一個CSS類名, 盡可能使用以下三者組成:

    塊名: 所屬組件的名稱

    元素: 元素在塊里面的名稱

    修飾符: 任何與塊或元素相關聯(lián)的的修飾符

    塊名
    這里的塊名很多初學者會以為是inline-block中的塊, 其實這里的塊名指的是一個獨立的模塊或組件. 例如一個

    可以用做一個模塊,
    中的

    文章版權歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

    轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/92161.html

    相關文章

    • 前端進階之路: 前端架構設計(3) - 測試核心

      摘要:而測試驅(qū)動開發(fā)技術并不只是單純的測試工作。需求向來就是軟件開發(fā)過程中感覺最不好明確描述易變的東西。這里說的需求不只是指用戶的需求,還包括對代碼 可能很多人和我一樣, 首次聽到前端架構這個詞, 第一反應是: 前端還有架構這一說呢? 在后端開發(fā)領域, 系統(tǒng)規(guī)劃和可擴展性非常關鍵, 因此架構師備受重視, 早在開發(fā)工作啟動之前, 他們就被邀請加入到項目中, 而且他們會跟客戶討論即將建成的平臺的...

      Karuru 評論0 收藏0
    • 前端進階之路: 前端架構設計(3) - 測試核心

      摘要:而測試驅(qū)動開發(fā)技術并不只是單純的測試工作。需求向來就是軟件開發(fā)過程中感覺最不好明確描述易變的東西。這里說的需求不只是指用戶的需求,還包括對代碼 可能很多人和我一樣, 首次聽到前端架構這個詞, 第一反應是: 前端還有架構這一說呢? 在后端開發(fā)領域, 系統(tǒng)規(guī)劃和可擴展性非常關鍵, 因此架構師備受重視, 早在開發(fā)工作啟動之前, 他們就被邀請加入到項目中, 而且他們會跟客戶討論即將建成的平臺的...

      宋華 評論0 收藏0
    • 前端進階之路: 前端架構設計(1)-代碼核心

      摘要:可能很多人和我一樣首次聽到前端架構這個詞第一反應是前端還有架構這一說呢在后端開發(fā)領域系統(tǒng)規(guī)劃和可擴展性非常關鍵因此架構師備受重視早在開發(fā)工作啟動之前他們就被邀請加入到項目中而且他們會跟客戶討論即將建成的平臺的架構要求使用還什么技術棧內(nèi)容類型 可能很多人和我一樣, 首次聽到前端架構這個詞, 第一反應是: 前端還有架構這一說呢? 在后端開發(fā)領域, 系統(tǒng)規(guī)劃和可擴展性非常關鍵, 因此架構師備...

      DevYK 評論0 收藏0

    發(fā)表評論

    0條評論

    最新活動
    閱讀需要支付1元查看
    <