什么是前端工程化
工程化是一種思想
解決低效、繁瑣問題
一、規(guī)范化
git

本章參考
- 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/
二、模塊化
css模塊化解決?案
核?思想:通過樣式?效規(guī)則來避免沖突。
- scoped:DOM節(jié)點添加data-v-version屬性,.selector => .selector[data-v-version]
例子:https://juejin.im/ - Css in JS:以腳本模塊來寫樣式,甚?有封裝好的樣式模塊可直接調?。
樣式 => 按規(guī)則?成的唯?selector
https://codepen.io/dongtianee/pen/ZZvYQo
https://github.com/4Catalyzer/astroturf - CSS MODULES :借助預編譯使樣式成為腳本中的變量
.selector => Object.selector | .selector => .main__sub__hash
https://css-modules.github.io/webpack-demo/ - BEM :Block__Element—Modifier
按照規(guī)則,?寫css,并在模版內增加相應class
BEM https://element.eleme.cn/#/zh-CN/component/alert
js模塊化解決?案
nodejs commonjs
require()
module.exports = xx;
ES
import {M} from './a.js' //b.js
export function() M(){ retrun 1}; //a.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/
三、組件化
組件化和模塊化的核?思想都在于分治,實際帶來的好處就是團隊協(xié)作效率和項?可維護性的提升。
組件化開發(fā)是Web開發(fā)的趨勢。
什么是組件?
UI為主
??上的?個UI塊可以封裝成?個組件。?如??的頭部,封裝成?個Header組件后,我希望它的腳本、樣式和模版可以放在?個?件夾中,到時候便于維護。
邏輯為主
某?個功能邏輯也可以封裝成?個組件。?如AutoComplete組件,封裝成?個組件后,我希望它的腳本、樣式和模版可以放在?個?件夾中,可以?處封裝,多處任意使?。
組件
在Web前端領域,我們可以將由特定邏輯和UI進?的?內聚,低耦合的封裝體稱為?個組件。
1)側重UI進?封裝的組件:代碼結構清晰,組件內的模塊就近放置,?便進?修改和維護。這種組件具備?內聚,低耦合的特性,但普適性不?。
2)側重邏輯進?封裝的組件:除了具備上述優(yōu)點外,還具有很?的普適性,更?便組件重?。
3)組件內可以包含組件,?如偏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
四、?動化
核心思想
能由機器?動完成的事情,絕不讓?來做。?動化是前端?程化核?。
- ?動初始化 eg. : vue-cli
- ?動構建(打包) eg.: webpack
- ?動測試 eg.: karma, jest
- ?動部署 eg.: Jenkins
本章參考
?https://juejin.im/entry/5b286a126fb9a00e45113435
? https://ithelp.ithome.com.tw/articles/10192300
? http://fis.baidu.com/fis3/index.html