精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

聊聊前端領域那些“門面”

開發 前端
門面模式(Facade)是 23 種經典設計模式之一,也叫外觀模式,是通過在客戶端和子系統之間引入一個中間層,將內部復雜度隱藏,暴露出一個簡單易用的接口。

[[410537]]

本文轉載自微信公眾號「神光的編程秘籍」,作者神說要有光zxg。轉載本文請聯系神光的編程秘籍公眾號。

門面模式(Facade)是 23 種經典設計模式之一,也叫外觀模式,是通過在客戶端和子系統之間引入一個中間層,將內部復雜度隱藏,暴露出一個簡單易用的接口。

引入門面模式之后,對客戶端來說,使用起來會簡單很多,不再需要了解具體的細節。

比如,沒用門面模式之前,可能是這樣的調用關系,客戶端需要了解每一個內部細節

而用了門面模式之后,客戶端不再需要了解具體每一個模塊,只需要把自己的需求告訴 Facade,然后它去調用內部模塊

加了一個門面,有改變功能么?并沒有,只是使得對外的接口更易用了。而這,就是門面模式的意義:封裝內部細節,簡化調用

其實在軟件領域這種門面太多了,各種 DSL(領域特定語言) 包括 html、css 還有 vue 的 template、react 的 jsx 都算是門面,babel 和 eslint 的 preset 也是門面。

下面我們分別來分析一下。

簡化 dom 創建的門面:html

瀏覽器提供了 dom api,基于 dom api 我們就可以構建 dom 樹,那為什么需要 html 呢?不用 html 可以么?

比如 dom api 創建 dom:

  1. const div = document.createElement('div'); 
  2. div.className = "a"
  3.  
  4. const img = document.createElement('img'); 
  5. img.src="./b.jpg" 
  6.  
  7. div.appendChild(img); 

和 html 描述 dom:

  1. <div class="a"
  2.     <img src="./b.jpg"
  3. </div> 

 

 

兩者并沒有區別。

所以,html 并沒有增加功能,它只是簡化了 dom 操作,這種明顯就是一種門面模式,不過是通過 DSL 的方式。

DSL 是指領域特定語言,設計一種語法來簡化邏輯的描述,然后通過解析該語言來專程描述的目標。瀏覽器就是通過解析 html 來構建 dom 樹的。

簡化樣式描述的門面:css

css 同樣也是一種 dsl,為了簡化樣式信息的描述。

比如直接給 dom 添加樣式會比較麻煩:

  1. const div = document.querySelector('.a'); 
  2. div.style.backgroundColor = 'blue'
  3.  
  4. const img = div.querySelector('img'); 
  5. img.style.border = '2px'

而通過 css 來添加就簡單很多:

  1. .a { 
  2.     background-color: blue; 
  3. .a img { 
  4.     border: 2px; 

css 有增加新功能么?沒有,它只是使得樣式描述更簡單,同樣,css 這種 dsl 也是由瀏覽器來解析的。

vue 的 template

我們知道操作視圖基于 dom api 就足夠了,前端框架就是把數據映射到視圖,而映射的目標也是 dom api(當然,中間有了一層虛擬 dom,那么 api 也是先創建虛擬 dom),但是 dsl 就沒必要選擇用 html 了,完全可以用其他的更適合自己特點的方式來描述。

vue 選擇了 template:

如果直接用 api 描述視圖,不夠直觀:

  1. render: function (createElement) { 
  2.   return createElement('h1', this.blogTitle) 

vue 選擇了 template 的方式,類似 html:

  1. <h1>{{ blogTitle }}</h1> 

 

這樣并沒有增加功能,只是讓開發者使用框架描述視圖的時候更簡單,而且 vue 還支持過濾器、指令、插值語法等功能。

但是引入了 template 的 dsl,也就需要編譯了,不像 html 是瀏覽器解析的,這個自定義 dsl 需要用自己的編譯器來解析,所以 vue 內部有一個 template compiler 來把模版轉為 render 函數。

react 的 jsx

react 同樣也是要把對視圖的描述映射成真正的 dom(中間有層虛擬 dom),首先會提供 api 的方式,但是為了簡化使用,會提供了描述視圖的方式:jsx。

直接用 api 的方式比較麻煩:

  1. const title = React.createElement("h1", {className: "main"}, "Hello React"); 

jsx 的方式就簡單很多:

  1. const title = ( 
  2.   <h1>Hello React</h1> 
  3. ); 

vue 和 react 選擇了不同的 dsl。我們知道 dsl 是需要編譯成具體的 api 調用的,vue 是在框架內部實現的,而 react 的 jsx 則是 babel 實現(因為是 js 語法的擴充)。

可以看到不管是 vue 的 template,還是 react 的 jsx 都沒有增加新的功能,增加這樣一層 dsl 只是為了簡化開發者對視圖的描述,和 html 的設計目的一致,都是門面模式的思想。

babel 的 preset

babel 是做代碼轉換的,把 es next 的語法,轉成目標環境支持的 js 語法,具體完成轉換的是一個個插件。但是如果開發者直接去指定插件太過麻煩,比如 es2015 就有一系列插件,而 es2016 又有一堆,如果由開發者去指定,那使用起來太過復雜。所以 babel 設計出了 preset。

babel6 的 preset 有 preset-es2015、 preset-es2016 等,他們內部就是一系列插件。而 babel7 進一步簡化成了 preset-env,只要通過 targets 指定目標環境,那么就會自動選出一系列插件來使用。

preset 有實現什么新功能么?沒有,最終轉換還是由插件來做的。但是 preset 簡化了開發者使用 babel 的成本,所以這也是一種典型的門面模式。

總結

門面模式是軟件領域特別常見的一種模式,就是當暴露給客戶端的子系統特別復雜的時候,通過增加一層門面,由他去和具體的子系統打交道,隔離復雜度,讓軟件的使用變得簡單。通過隔離復雜度,讓復雜度得到很好的治理,不然的話可能會隨著迭代而使用起來越來越復雜。

前端領域常見的 html、css、還有 vue 的 tempalte 以及 react 的 jsx 都是 dsl,dsl 的目的就是為了簡化調用,是門面模式的典型實現。(template 和 jsx 要由自己做編譯,而 html、css 是瀏覽器做的編譯)。

此外,babel 和 eslint 等的 preset 也是為了簡化使用成本而引入的,不然用戶就要直接面對各種復雜的插件配置。

 

門面模式并沒有引入新的功能實現,只是為了簡化系統使用成本而引入的一個入口。如果遇到系統使用特別復雜的時候,不妨通過引入一個門面(封裝成 api 或者 dsl 的形式)來簡化吧。

 

責任編輯:武曉燕 來源: 神光的編程秘籍
相關推薦

2022-05-23 08:34:08

微前端微服務開發

2021-06-02 08:33:31

TPCTPC-H系統

2022-02-15 22:45:00

前端設計模式

2018-05-09 08:18:26

微服務改造架構

2021-05-10 08:58:09

Harbor架構Registry 服務

2022-09-09 08:08:28

開源項目服務

2022-04-14 11:50:39

函數組件hook

2013-01-11 16:05:41

求職招聘

2022-11-14 08:44:56

前端門面模式接口

2023-07-31 08:21:22

語法校對器Pick

2017-03-16 12:08:09

OpenstackCompute DriLibvirt

2022-06-02 08:42:15

Redis數據庫

2021-08-06 11:50:49

Linux 字節對齊Linux 系統

2020-11-30 13:10:39

MySQL安全服務器

2021-01-13 11:11:29

TCP連接耗時網絡協議

2012-08-30 09:41:23

移動應用開發

2020-09-17 13:43:03

等保2.0網絡安全漏洞

2018-04-24 09:05:09

容器存儲接口

2024-03-27 07:58:23

開源軟件MongoDB

2019-01-07 12:02:02

TCP長連接Java
點贊
收藏

51CTO技術棧公眾號

日韩精品电影一区二区| 国产欧美123| 中文字幕码精品视频网站| 欧美激情偷拍自拍| 日韩亚洲欧美一区二区三区| 成人免费视频91| 黄色国产在线| 韩国理伦片一区二区三区在线播放| 久久在线精品视频| 中国av免费看| 91成人福利社区| 精品久久久久久久久久久| 一本久道久久综合| 日韩中文字幕免费观看| 日韩国产欧美在线视频| 欧美国产日韩一区二区在线观看| 国产精品一区二区入口九绯色| 欧美在线一级| 懂色av中文一区二区三区天美| 一本一本a久久| 日本韩国一区| 国产成人99久久亚洲综合精品| 国产成人aa精品一区在线播放 | 久久久久在线视频| 91高清一区| 国产亚洲一区精品| 中国男女全黄大片| 成人黄页网站视频| 欧美性猛交xxxx乱大交| 国产性生活免费视频| av在线女优影院| 久久午夜羞羞影院免费观看| caoporen国产精品| 97超碰人人草| 日本欧美在线观看| 国产91对白在线播放| 久久久久亚洲av无码专区| 久久综合国产| 中文字幕国产亚洲| 强伦人妻一区二区三区| 黄色免费大全亚洲| 日韩精品一区二区三区在线| 一二三av在线| 亚洲我射av| 欧美日韩中文字幕一区二区| 中文字幕无码不卡免费视频| 亚洲少妇视频| 欧美日韩性视频在线| 日韩网站在线免费观看| 天使と恶魔の榨精在线播放| 亚洲天堂2014| 在线无限看免费粉色视频| 国产高清在线| 国产欧美视频一区二区| 欧美日韩另类综合| 日韩欧美在线番号| 91亚洲精品一区二区乱码| 成人片在线免费看| 人妻少妇一区二区三区| 成人福利视频网站| 国产一区不卡在线观看| 人妻精品一区二区三区| www.欧美.com| 欧美高清视频一区| 国产中文字幕在线| 国产亚洲女人久久久久毛片| 青娱乐一区二区| 国产福利小视频在线| 国产视频一区二区在线观看| 亚洲精品日韩在线观看| 免费大片黄在线| 亚洲色图欧洲色图婷婷| 黄色一级视频播放| 直接在线观看的三级网址| 亚洲午夜精品在线| 国产成人精品视频免费看| 国模冰冰炮一区二区| 色综合中文字幕国产| 久久久久免费精品| 九九久久国产| 在线不卡免费av| 一起草最新网址| 成午夜精品一区二区三区软件| 亚洲精品电影久久久| 女女互磨互喷水高潮les呻吟| 郴州新闻综合频道在线直播| 久久亚洲一区二区三区四区五区高| 国产乱国产乱老熟300| 亚洲国产日本| 国产精品电影一区| 国产精品伦一区二区三区| 国v精品久久久网| 精品一区二区三区日本| 在线观看免费黄色| 亚洲美女一区二区三区| 国产主播在线看| 国产a亚洲精品| 日韩欧美一区中文| 一级片视频免费看| 一区二区国产在线| 国产91在线播放九色快色| 国产又爽又黄又嫩又猛又粗| av男人天堂一区| 亚洲午夜高清视频| 国产在线88av| 宅男在线国产精品| 亚洲成人网在线播放| 在线观看国产精品入口| 奇米一区二区三区四区久久| av网站在线免费看| 久久久综合精品| 91免费视频黄| 久久91导航| 精品久久久久久久久久久久包黑料| 天天躁夜夜躁狠狠是什么心态| 欧美日本免费| 国产欧美久久一区二区| 香蕉国产在线视频| 中文字幕日韩一区二区| av免费中文字幕| 91久久偷偷做嫩草影院电| 怡红院精品视频| 日韩污视频在线观看| 国产美女视频91| 五月天婷亚洲天综合网鲁鲁鲁| 黄在线观看免费网站ktv| 91精品国产aⅴ一区二区| 女人十八毛片嫩草av| 亚洲免费中文| 久久精品欧美| 国产精品国精产品一二| 欧美一区二区三区视频在线观看| 久久婷婷五月综合| 国产日韩亚洲欧美精品| 国产福利一区二区三区在线观看| 黄视频网站在线| 欧美体内she精视频| 国产熟妇搡bbbb搡bbbb| 99亚洲伊人久久精品影院红桃| 3d动漫啪啪精品一区二区免费| 在线国产91| 欧美日韩久久一区| 色综合99久久久无码国产精品| 亚洲一区免费| 久久久一本精品99久久精品| 9765激情中文在线| 精品国产伦一区二区三区观看体验| 成人免费视频国产免费观看| 韩国三级电影一区二区| 自拍另类欧美| 3d动漫一区二区三区在线观看| 深夜福利一区二区| 伊人精品在线视频| 中文字幕免费不卡| 亚洲精品视频导航| 久久理论电影| 国产日韩欧美黄色| 成人video亚洲精品| 欧美一区二区三区四区五区| 欧美视频www| 国产精品一区二区黑丝| 国产成人一区二区三区别| 日韩成人18| 高清欧美性猛交xxxx| 色呦呦视频在线| 欧美性xxxx在线播放| 干b视频在线观看| 日本伊人色综合网| 在线看成人av电影| 视频成人永久免费视频| 久久全国免费视频| 免费在线黄色网址| 欧美日韩一区在线观看| 成人免费毛片xxx| 粉嫩av一区二区三区| 波多野结衣乳巨码无在线| 狠狠做六月爱婷婷综合aⅴ| 国产日韩换脸av一区在线观看| 免费**毛片在线| 精品国产乱码久久| 亚洲无码精品一区二区三区| 亚洲天天做日日做天天谢日日欢| 国产精品二区视频| 蜜桃久久av| 一区二区三区一级片| 老汉色老汉首页av亚洲| 国产精品r级在线| 性欧美video高清bbw| 亚洲精品第一页| 国产精品区在线观看| 亚洲a一区二区| 99久久99久久精品免费看小说.| 国产一区二区三区在线看麻豆| 欧美视频在线观看网站| 日韩精品首页| 精品一区久久久| av一级久久| 18性欧美xxxⅹ性满足| 看黄网站在线| 国产丝袜一区二区三区免费视频| 夜夜躁很很躁日日躁麻豆| 天天亚洲美女在线视频| 免费在线观看黄色小视频| 不卡一区二区三区四区| 亚欧激情乱码久久久久久久久| 好吊视频一区二区三区四区| 亚洲精品永久www嫩草| 精品深夜福利视频| 91精品国产综合久久香蕉最新版 | 国产视频精选在线| 欧美大片日本大片免费观看| 国内av在线播放| 亚洲妇女屁股眼交7| 国产探花视频在线播放| 99这里只有精品| 三级网站免费看| 蜜桃av噜噜一区二区三区小说| www插插插无码视频网站| 99精品视频精品精品视频| 免费影院在线观看一区| 成人黄色av网址| 91精品免费视频| 视频一区在线免费看| 欧美亚州一区二区三区| 超级碰碰不卡在线视频| 久久精品在线播放| jzzjzzjzz亚洲成熟少妇| 日韩精品在线观看视频| 亚洲国产日韩在线观看| 欧美精品在线观看播放| 波多野结衣电车痴汉| 欧美性猛交xxxx久久久| 黄色片视频网站| 亚洲综合成人网| 日日骚一区二区三区| 亚洲女同一区二区| 男女全黄做爰文章| 国产欧美久久久精品影院| 公侵犯人妻一区二区三区| 9色porny自拍视频一区二区| 一级黄色电影片| 国产精品一区二区在线看| 国产嫩草在线观看| 日韩在线一区二区三区| 亚洲激情在线观看视频| 日av在线不卡| 91制片厂毛片| 捆绑调教美女网站视频一区| 99视频精品免费| 日本大胆欧美人术艺术动态| 香蕉视频网站入口| 久久精品国产精品亚洲综合| wwwwwxxxx日本| 久久99九九99精品| 九九久久久久久| 国产精品69久久久久水密桃 | 久久影视一区二区| 欧美黑人欧美精品刺激| 久久久久久久久蜜桃| 丰腴饱满的极品熟妇| 国产欧美一区二区精品性色超碰| 日韩一级片在线免费观看| 国产精品污网站| 亚洲av无一区二区三区| 亚洲另类在线制服丝袜| 免费一级特黄特色大片| 天天av天天翘天天综合网色鬼国产| 91视频免费网址| 欧美中文字幕一区二区三区| 91女人18毛片水多国产| 日韩美女一区二区三区| 婷婷在线免费视频| 亚洲图片制服诱惑| 日本最新在线视频| 欧美日本中文字幕| 日本不卡1234视频| 国产精品美乳在线观看| 国产日韩中文在线中文字幕| 国产精品亚洲综合| 国产精品一区二区99| 永久免费精品视频网站| 尤物在线精品| 天天爱天天操天天干| 国产成人综合网| 伊人网伊人影院| 综合电影一区二区三区| 日韩av综合在线| 欧美午夜视频网站| 亚洲精品久久久久avwww潮水| 亚洲精品日韩久久久| 国产美女av在线| 欧美一区二区三区免费观看| 国产激情一区| 日本视频精品一区| 国产精品hd| 丁香婷婷激情网| 成人黄色a**站在线观看| 亚洲v国产v欧美v久久久久久| 亚洲美女免费视频| 欧美一区二区三区久久久| 91精品国产麻豆国产自产在线 | 久久影院电视剧免费观看| 国产喷水在线观看| 欧美日韩中文字幕日韩欧美| 99久久精品无免国产免费 | 99re在线视频观看| 欧美在线视频一区| 精品无码久久久久成人漫画| 亚洲大片一区二区三区| 中文字幕一级片| 亚洲精品动漫久久久久| 成人video亚洲精品| 国产精品久久久久高潮| 91精品丝袜国产高跟在线| 亚洲一区二区三区涩| 国产日韩免费| 精品无码av一区二区三区不卡| 国产精品私人影院| 高清乱码免费看污| 欧美精品一区二区不卡| fc2ppv国产精品久久| 国产精品视频久久久| 美女少妇全过程你懂的久久| 欧美高清中文字幕| 极品少妇一区二区三区精品视频| 亚洲精品午夜视频| 精品久久久久久久中文字幕 | 精品国产大片大片大片| 日韩欧美亚洲国产一区| 韩国中文字幕hd久久精品| 久久视频国产精品免费视频在线 | 欧美性受xxxx| 四虎影视精品成人| 97精品国产97久久久久久| 三级欧美日韩| 日韩视频 中文字幕| 国产原创一区二区| 日本裸体美女视频| 欧美三级电影一区| av在线女优影院| 国产精品直播网红| 成人影院在线| 欧美日韩一区二区三区69堂| 欧美激情在线观看视频免费| 午夜精品免费观看| 亚洲人成电影网站色www| 成人免费网站视频| 欧洲亚洲一区二区三区四区五区| 性伦欧美刺激片在线观看| 91精品国产自产| 欧美性生交xxxxx久久久| 能在线看的av| 国产精品成人在线| av一区二区高清| 自拍偷拍一区二区三区四区| 国产精品精品国产色婷婷| 在线观看亚洲国产| 精品国产拍在线观看| 欧美国产亚洲精品| 欧美高清中文字幕| 91麻豆精品视频| 中文字幕+乱码+中文字幕明步| 色av吧综合网| 日韩免费高清视频网站| 欧美一区二区激情| 久久综合久久久久88| 国产成人a v| 久久国产精品久久久久| aiai久久| 99久久久无码国产精品6| 国产欧美日韩中文久久| 91黄色在线视频| 欧美精品久久久久| 国产在视频线精品视频www666| 天天干天天干天天干天天干天天干| 综合欧美一区二区三区| 亚洲精品一区二区三区蜜桃| 欧美专区在线观看| 水蜜桃久久夜色精品一区| 黑人巨大猛交丰满少妇| 精品久久久中文| 色影院视频在线| 国产精品美女黄网| 日本欧美一区二区| 免费视频网站www| 国产亚洲一区二区精品| 欧美日本三级| 国产精品少妇在线视频| 亚洲人成在线观看一区二区| 性感美女一级片| 91青草视频久久| 午夜在线一区二区| 国产黄色的视频| 亚洲欧洲成视频免费观看| 国产一区二区av在线| 日韩av资源在线| 一区二区三区蜜桃| 成人性生交大片免费看午夜 | 一区二区免费视频| 国产日本在线视频|