第六屆360前端星計劃_前端工程化

前端工程化

主講人

  • 田東東
  • 360前端技術(shù)專家
  • 奇舞團

一胸私、什么是前端工程化薪缆?

  • 目標(biāo)
  • 技術(shù)
  • 原因

目標(biāo)
在前端領(lǐng)域阻荒,利用不斷進步經(jīng)驗積累帶來的各種方案裤纹,來解決在項目中的開發(fā)測試維護階段遇到的種種抵消和繁瑣的問題
各種工具如下:

  1. ?程化里的技術(shù)
    ?程化是?種思想梦鉴,技術(shù)是?種實踐崇渗。技術(shù)會隨著時代進步不斷地演進和改變巡通,在不同的時期膛虫,都會有不同的技術(shù)來承載和踐?著?程化思想。
    思想的落地離不開?動和實踐躏吊,技術(shù)雖然會過時氛改,但是實踐必須立?當(dāng)下。
  2. 為什么前端要做?程化
    歷史原因使我們?多數(shù)?后知后覺比伏,用?句?白話來說胜卤,前端?程化就是為了提效。這個提效體現(xiàn)在項目的開發(fā)赁项、測試及維護階段葛躏。

二、工程化主要包括:

  1. 規(guī)范化

  • 規(guī)范化:是項?可維護性的基?悠菜。
  • 版本管理及開發(fā)流程規(guī)范
    • 編寫規(guī)范
    • 腳本
    • 樣式
    • ?錄結(jié)構(gòu)
      git:版本管理舰攒、代碼倉庫
      git flow:基于git / 簡化操作、活動模型 / ?為規(guī)范
      git flow 的使用
      git開發(fā)流程示意圖:
      [圖片上傳失敗...(image-308759-1586611609866)]

參考:
? https://git-scm.com/docs
?https://www.atmarkit.co.jp/ait/articles/1708/01/news015.html
?https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow
? https://danielkummer.github.io/git-flow-cheatsheet/

注:安裝git和git flow悔醋,參考?檔摩窃,遵循git flow工作流模擬?次從開發(fā)到打Tag上線的全過程。

  1. 模塊化

分類:CSS模塊化 v/s JS模塊化

我們?般邏輯相關(guān)的代碼放在同?個?件中芬骄,當(dāng)做?個模塊猾愿。
只需關(guān)注模塊內(nèi)邏輯的實現(xiàn),?需考慮變量污染等問題德玫,模塊之間可互相調(diào)?匪蟀。

css模塊化解決?案
1)核?思想:通過樣式?效規(guī)則來避免沖突。

scoped:DOM節(jié)點添加data-v-version屬性宰僧,.selector => .selector[data-v-version]
例子:https://juejin.im/

Css in JS:以腳本模塊來寫樣式,甚?有封裝好的樣式模塊可直接調(diào)?。
樣式 => 按規(guī)則?成的唯?selector
https://codepen.io/dongtianee/pen/ZZvYQo
https://github.com/4Catalyzer/astroturf

CSS MODULES :借助預(yù)編譯使樣式成為腳本中的變量
.selector => Object.selector | .selector => .main__sub__hash
https://css-modules.github.io/webpack-demo/

BEM :Block__Element—Modifier
按照規(guī)則琴儿,?寫css段化,并在模版內(nèi)增加相應(yīng)class
BEM https://element.eleme.cn/#/zh-CN/component/alert
優(yōu)雅地使?BEM —— 可編程的CSS
2)為元素建? shadow root,內(nèi)部樣式與外部樣式完全隔離

js模塊化解決?案

本章參考
https://huangxuan.me/2015/07/09/js-module-7day/
? https://github.com/seajs/seajs/issues/588
? https://juejin.im/post/5aaa37c8f265da23945f365c
? https://yuguo.us/weblog/javascript-module-development-history/
? http://es6.ruanyifeng.com/#docs/module-loader
? https://juejin.im/post/5bb6c5195188255c9e02e6f3
? https://juejin.im/entry/59a5538b6fb9a02481206f22
? https://dom.spec.whatwg.org/#shadow-trees
? https://www.w3.org/TR/shadow-dom/

  1. 組件化

組件化和模塊化的核?思想都在于分治造成,實際帶來的好處就是團隊協(xié)作效率和項?可維護性的提升显熏。
組件化開發(fā)是Web開發(fā)的趨勢。
什么是組件晒屎?
UI為主
??上的?個UI塊可以封裝成?個組件喘蟆。?如??的頭部,封裝成?個Header組件后鼓鲁,我希望它的腳本蕴轨、樣式和模版可以放在?個?件夾中,到時候便于維護骇吭。
邏輯為主
某?個功能邏輯也可以封裝成?個組件橙弱。?如AutoComplete組件,封裝成?個組件后燥狰,我希望它的腳本棘脐、樣式和模版可以放在?個?件夾中,可以?處封裝龙致,多處任意使?蛀缝。
組件
在Web前端領(lǐng)域,我們可以將由特定邏輯和UI進?的?內(nèi)聚目代,低耦合的封裝體稱為?個組件内斯。
1)側(cè)重UI進?封裝的組件:代碼結(jié)構(gòu)清晰,組件內(nèi)的模塊就近放置像啼,?便進?修改和維護俘闯。這種組件具備?內(nèi)聚,低耦合的特性忽冻,但普適性不?真朗。
2)側(cè)重邏輯進?封裝的組件:除了具備上述優(yōu)點外,還具有很?的普適性僧诚,更?便組件重?遮婶。
3)組件內(nèi)可以包含組件,?如偏UI的組件往往都是包含有偏邏輯的組件湖笨。
規(guī)范化旗扑、模塊化、組件化是否符合前端?程化的?的——提效

本章參考
? https://jiongks.name/slides/css-scoping/
? https://zhuanlan.zhihu.com/p/42370005
? https://zhuanlan.zhihu.com/p/48811872
? https://www.webcomponents.org/introduction

  1. ?動化

核?思想:能由機器?動完成的事情慈省,絕不讓?來做臀防。?動化是前端?程化核?。
? ?動初始化 eg. : vue-cli
? ?動構(gòu)建(打包) eg.: webpack
? ?動測試 eg.: karma, jest
? ?動部署 eg.: Jenkins

?動化測試

?動化部署

?動化初始化

自動化構(gòu)建

webpack
papcel
本章參考
?https://juejin.im/entry/5b286a126fb9a00e45113435
? https://ithelp.ithome.com.tw/articles/10192300
? http://fis.baidu.com/fis3/index.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市袱衷,隨后出現(xiàn)的幾起案子捎废,更是在濱河造成了極大的恐慌,老刑警劉巖致燥,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件登疗,死亡現(xiàn)場離奇詭異,居然都是意外死亡嫌蚤,警方通過查閱死者的電腦和手機辐益,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來脱吱,“玉大人智政,你說我怎么就攤上這事〖被耍” “怎么了女仰?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長抡锈。 經(jīng)常有香客問我疾忍,道長,這世上最難降的妖魔是什么床三? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任一罩,我火速辦了婚禮,結(jié)果婚禮上撇簿,老公的妹妹穿的比我還像新娘聂渊。我一直安慰自己,他們只是感情好四瘫,可當(dāng)我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布汉嗽。 她就那樣靜靜地躺著,像睡著了一般找蜜。 火紅的嫁衣襯著肌膚如雪饼暑。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天洗做,我揣著相機與錄音弓叛,去河邊找鬼。 笑死诚纸,一個胖子當(dāng)著我的面吹牛撰筷,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播畦徘,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼毕籽,長吁一口氣:“原來是場噩夢啊……” “哼抬闯!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起影钉,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤画髓,失蹤者是張志新(化名)和其女友劉穎掘剪,沒想到半個月后平委,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡夺谁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年廉赔,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片匾鸥。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡蜡塌,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出勿负,到底是詐尸還是另有隱情馏艾,我是刑警寧澤,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布奴愉,位于F島的核電站琅摩,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏锭硼。R本人自食惡果不足惜房资,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望檀头。 院中可真熱鬧轰异,春花似錦、人聲如沸暑始。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽廊镜。三九已至牙肝,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間期升,已是汗流浹背惊奇。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留播赁,地道東北人颂郎。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像容为,于是被迫代替她去往敵國和親乓序。 傳聞我的和親對象是個殘疾皇子寺酪,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,697評論 2 351