1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        面向?qū)ο笠暯窍碌那岸斯こ腆w系

        共 3511字,需瀏覽 8分鐘

         ·

        2020-09-16 22:06


        關(guān)注「前端向后」微信公眾號,你將收獲一系列「用原創(chuàng)」的高質(zhì)量技術(shù)文章,主題包括但不限于前端、Node.js以及服務(wù)端技術(shù)


        寫在前面

        從面向過程的角度來看前端工程,就是各個過程,以及過程之間的銜接:

        (面向過程視角下的)前端工程 = 過程 + 過程間的銜接

        其中,過程旨在解決效率問題,而過程間銜接關(guān)注更多的是體驗問題,前端工作流相關(guān)的所有工程設(shè)施都可以按這個標(biāo)準(zhǔn)來劃分,要么是過程,要么是銜接

        反過來從問題角度看,體驗問題能夠通過銜接來緩解,比如打通上下游工具/平臺、寫個批處理工具、搭個管理平臺,效率問題則必須通過更優(yōu)、更快的過程來解決,比如協(xié)作模式升級、構(gòu)建速度優(yōu)化

        但面向過程的劃分也存在一些問題,例如:

        • 一些相似的過程橫跨多個生產(chǎn)環(huán)節(jié):打包工具跨開發(fā)、構(gòu)建階段,調(diào)試套件跨開發(fā)、測試階段,迭代管理跨全流程

        • 過程之間需要大量的銜接:一些工具需要配合使用,如腳手架與公共庫、編輯器與構(gòu)建工具、調(diào)試套件

        • 過程邊界不清晰,缺少層次結(jié)構(gòu):很容易產(chǎn)生一大堆拉拉扯扯的零散工具/平臺,如性能日志導(dǎo)出工具、性能分析診斷工具、性能監(jiān)控平臺、性能數(shù)據(jù)可視化平臺

        既然如此,不妨換個視角觀察,從面向?qū)ο蟮慕嵌葋砜?/p>

        一.前端工程中的 OO 概念

        對象

        對象,是對前端應(yīng)用生產(chǎn)活動中各個實體的抽象,其中一些對象是主體(比如充當(dāng)不同角色的人),另一些是客體(比如工具、平臺等各種具體事物)

        對象之間通過一系列交互行為來完成前端應(yīng)用的開發(fā)和交付

        1. 產(chǎn)品經(jīng)理:從現(xiàn)實生活中的問題發(fā)現(xiàn)用戶需求,并將用戶需求轉(zhuǎn)化成產(chǎn)品需求

        2. 設(shè)計師:根據(jù)產(chǎn)品需求設(shè)計 UI 效果和交互操作流程,以設(shè)計稿的形式輸出

        3. 后端工程師:根據(jù)產(chǎn)品需求設(shè)計數(shù)據(jù)模型,實現(xiàn)數(shù)據(jù)讀寫,約定前后端數(shù)據(jù)協(xié)議

        4. 前端工程師:根據(jù)產(chǎn)品需求還原設(shè)計稿,并根據(jù)前后端數(shù)據(jù)協(xié)議實現(xiàn)交互功能,產(chǎn)出前端應(yīng)用程序

        5. 測試工程師:對前端應(yīng)用程序進(jìn)行充分測試,保證產(chǎn)品需求得到了一致滿足

        6. 運維工程師:將質(zhì)量可靠的前端應(yīng)用程序部署到生產(chǎn)環(huán)境

        7. 運營專員:將已上線的前端應(yīng)用程序推廣給用戶

        與面向過程的視角不同,這里更關(guān)心的是對象和對象間的交互行為,以前端開發(fā)工作為例:

        • 面向過程視角:現(xiàn)在處于開發(fā)階段,我要通過模塊拆分、編碼、調(diào)試等步驟來完成開發(fā)任務(wù),接著項目進(jìn)入下一階段

        • 面向?qū)ο笠暯牵何沂乔岸斯こ處煟倚枰a(chǎn)品經(jīng)理、設(shè)計師、后端工程師提供的產(chǎn)品需求、設(shè)計稿和數(shù)據(jù)協(xié)議,產(chǎn)出前端應(yīng)用程序給到測試工程師

        也就是說:

        (面向?qū)ο笠暯窍碌模┣岸斯こ?= 對象 + 對象間的關(guān)系及交互

        其中,對象的數(shù)量關(guān)系到體驗,對象數(shù)量越多,主體需要關(guān)注的東西越多,體驗越差,對象依賴關(guān)系的復(fù)雜度決定了效率,對象關(guān)系越復(fù)雜,交互越多越繁瑣,效率越低

        接口

        接口,是在前端應(yīng)用生產(chǎn)過程中的一些抽象產(chǎn)物,不直接體現(xiàn)在最終交付物中,例如:

        • 協(xié)議/約定

        • 規(guī)范

        這些抽象產(chǎn)物定義了對象間通信的消息格式,讓人與人、工具與工具、工具與人都能夠緊密協(xié)作

        抽象類

        抽象類,也是前端應(yīng)用生產(chǎn)過程中的一些抽象產(chǎn)物,定義了不同對象之間的關(guān)聯(lián)和交互方式,例如:

        • 研發(fā)模式

        • 技術(shù)方案

        • 流程標(biāo)準(zhǔn)

        • 工具鏈

        與接口不同,這些“抽象類”能夠約束多個對象之間的聯(lián)動關(guān)系,而接口要約束的是兩個對象之間的一次交互行為

        二.面向?qū)ο蟮那岸斯こ淘O(shè)計

        審視前端生產(chǎn)活動

        先將視角爬升到白云之上足夠高的地方,再看前端生產(chǎn)活動:

        現(xiàn)實問題(用戶需求) -> 前端生產(chǎn)活動 -> (解決方案)前端應(yīng)用程序

        P.S.前端生產(chǎn)活動,指的是前端項目從需求到發(fā)布上線的整個生命周期

        即,通過前端應(yīng)用程序解決現(xiàn)實問題,中間的生產(chǎn)活動就是前端工程所關(guān)注的領(lǐng)域

        如果把前端工程看作一個系統(tǒng),其運作原理大致是這樣:

        一些人,通過一些交互,生成一些中間產(chǎn)物,最終交付前端應(yīng)用程序

        輸入用戶需求,輸出前端應(yīng)用程序,前端工程一直以來所要解決的問題無非兩個:

        • 效率:減少一些人、減少一些交互、規(guī)范化一些中間產(chǎn)物

        • 體驗:簡化一些交互、減少一些中間產(chǎn)物

        P.S.當(dāng)然,質(zhì)量是前提條件,就像CAP 中的 P,實屬沒得選。所以傷及質(zhì)量的效率、體驗提升不在討論范圍內(nèi)

        建模前端工程

        首先,識別出系統(tǒng)中的所有主體對象:

        • 項目經(jīng)理

        • 產(chǎn)品經(jīng)理

        • 設(shè)計師

        • 前端工程師

        • 后端工程師

        • 測試工程師

        • 運維工程師

        • 運營專員

        那么頂層應(yīng)該是前端生產(chǎn)平臺,定義了研發(fā)模式和流程標(biāo)準(zhǔn),讓這些角色能夠協(xié)同工作:

        第二層是 5 大中心,承載前端應(yīng)用程序在生命周期不同階段的生產(chǎn)活動,關(guān)鍵類如下:

        • 項目中心:項目、迭代及其相關(guān)資源類(需求文檔、設(shè)計稿、數(shù)據(jù)協(xié)議)

        • 研發(fā)中心:腳手架、物料池、IDE、構(gòu)建工具、調(diào)試器、測試套件等類

        • 發(fā)布中心:部署服務(wù)類

        • 監(jiān)控中心:應(yīng)用數(shù)據(jù)報表、報警服務(wù)類

        • 運營中心:用戶數(shù)據(jù)報表、配置后臺類

        其中,以源碼編輯為中心的研發(fā)工作臺已經(jīng)成為趨勢,前端工作流相關(guān)的工具、平臺與定制化端 IDE/云 IDE提供的開發(fā)環(huán)境充分融合,集中解決過程間銜接的體驗問題

        另一方面,傳統(tǒng)的前端研發(fā)模式也正在發(fā)生變革,例如:

        • 工具化/自動化設(shè)計還原:設(shè)計師直接產(chǎn)出可用的前端代碼,而不再輸出設(shè)計稿,減少了反復(fù)確認(rèn)視覺效果的低效交互

        • 基于標(biāo)準(zhǔn)組件的低代碼開發(fā)模式:將中間產(chǎn)物規(guī)范化,脫離全套開發(fā)工具(腳手架、IDE、構(gòu)建工具等)也能產(chǎn)出前端應(yīng)用程序,同樣減少了一些對象間的交互,效率有所提升

        整個前端工程系統(tǒng)都是為了更快捷地交付前端應(yīng)用程序,從這個角度來看,研發(fā)模式上的這些變革也是順理成章的

        三.抽象、封裝、繼承與多態(tài)

        抽象

        抽象的目的是增加靈活性和通用性(抵抗變化),前端工程中有 3 種常見的抽象:

        • 從諸多同類客體對象抽象出通用模型:跨容器框架(如Rax)、跨引擎接口(如React Native JSI)、標(biāo)準(zhǔn)容器

        • 從中間產(chǎn)物抽象出標(biāo)準(zhǔn)協(xié)議:跨端組件、通用 API

        • 從對象交互活動中抽象出規(guī)范流程:研發(fā)模式、技術(shù)方案(如Lottie

        其中,抽象層的作用分為兩種:

        • 把變化的部分圈起來:抽象層以下能夠靈活變化,抽象層之上對這些變化沒有感知

        • 將不變的部分固化:流程固定不變,但流程中的某些環(huán)節(jié)可替換,就像模版方法模式

        封裝

        封裝的目的是信息隱藏,就像一個柜臺窗口,隔開了后廚與前廳,用來區(qū)分實現(xiàn)者和使用者

        在前端工程中按關(guān)注點 的是平臺維護(hù)者和用戶,例如:

        • IDE:是對前端開發(fā)相關(guān)的整套工具環(huán)境的封裝,包括腳手架、編輯器、調(diào)試器、依賴管理工具、構(gòu)建工具等在內(nèi)

        • 構(gòu)建工具:是對本地開發(fā)、測試/正式部署等環(huán)節(jié)所需的資源處理步驟的封裝,包括源碼編譯、資源優(yōu)化、源碼/產(chǎn)物靜態(tài)檢查等步驟

        • 發(fā)布服務(wù):是對正式、測試環(huán)境下的部署、灰度發(fā)布、回滾等功能的封裝,讓測試工程師、產(chǎn)品經(jīng)理無需專業(yè)的運維知識也能完成前端應(yīng)用的部署和發(fā)布

        封裝能夠有效減少頂層對象數(shù)量,將內(nèi)部的依賴隱藏起來,主體對象需要關(guān)注的對象更少,不必了解內(nèi)部具體交互細(xì)節(jié)也能輕松完成一些復(fù)雜工作

        繼承

        繼承的目的是復(fù)用現(xiàn)有對象的屬性或行為,前端工程中常見的復(fù)用形式有:

        • 工具包:將相對完整的工程能力打包成 CLI/GUI 工具或 IDE 插件包,可集成到其它工程體系中

        • SDK:將工程能力中可復(fù)用的部分抽離出來,允許在此基礎(chǔ)上二次開發(fā)和擴(kuò)展

        其中,IDE 插件包是一種相對新的復(fù)用形式,比定制 IDE 和 GUI 客戶端的成本更低,也不失為一種好的選擇

        多態(tài)

        多態(tài)的目的是擴(kuò)展,從前端工程上看,多態(tài)體現(xiàn)在:

        • 面向角色的定制:比如產(chǎn)品經(jīng)理、前端工程師對應(yīng)的系統(tǒng)主頁不同

        • 面向場景的橫向拓展:比如小程序、Web、移動端、PC 中后臺等等,一個流程環(huán)節(jié)在不同場景對應(yīng)各自的實現(xiàn)

        因此,不同的角色能夠在一套系統(tǒng)中完成各自的工作,同樣的研發(fā)模式能夠產(chǎn)出不同類型的前端應(yīng)用程序

        四.總結(jié)

        從面向?qū)ο蟮慕嵌葋砜?,前端工程是對象和對象間的關(guān)系及交互行為

        一些人,通過一些交互,生成一些中間產(chǎn)物,最終交付前端應(yīng)用程序

        對象的數(shù)量直接關(guān)系到體驗,對象間依賴關(guān)系的復(fù)雜度決定著效率。因此,要么減少主體對象需要關(guān)注的頂層對象數(shù)量,要么簡化對象間的依賴關(guān)系

        參考資料

        • 面向?qū)ο缶幊趟枷胫ㄒ唬└攀?/p>

        • 面向?qū)ο缶幊趟枷胫ǘ┙鉀Q問題的方法

        • 面向?qū)ο缶幊趟枷胫ㄈ┟嫦驅(qū)ο缶幊痰奶攸c

        • 面向?qū)ο缶幊趟枷胫ㄋ模╊惻c對象(實例)的關(guān)系

        聯(lián)系我 ? ? ?

        如果心中仍有疑問,請查看原文并留下評論噢。(特別要緊的問題,可以直接微信聯(lián)系 ayqywx




        推薦閱讀




        我的公眾號能帶來什么價值?(文末有送書規(guī)則,一定要看)

        每個前端工程師都應(yīng)該了解的圖片知識(長文建議收藏)

        為什么現(xiàn)在面試總是面試造火箭?

        瀏覽 56
        點贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        面向?qū)ο蟮南到y(tǒng)分析
        點贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            完全免费在线视频 | chinese高潮xxxxfree | 91人体视频 | 91精品久 | A片无码免费视频 | 高潮喷水视频在线 | 91国产在线视频在线 | 最新免费黄色网址 | 久久 无码 一区二区三区四区 | 做爱网站视频免费观看黄色 |