Babel學習系列2 Babel設計,組成

2021-09-12 00:25:31 字數 1382 閱讀 4534

第一篇 babel學習系列1-babel歷史

上篇講了 babel 的歷史,為了解決es6瀏覽器不支援的問題,這篇聊下babel的整個設計,基本組成

(在 alloyteam 找的圖,ast:abstract syntax tree, 抽象語法樹) 從圖上可以看到,babel 會將我們寫的**轉換ast 之後,通過便利 ast 樹,對樹做一些修改,然後再將 ast 轉成 code,這樣我們用的 箭頭函式,let,const,解構賦值才能用的舒坦

babel 的核心是在@babel/core這個npm 包,圍繞在它周圍的分別是

為了形象的講每個的作用,我用汽車發動機來做比喻 我們的在加油站加的油(我們寫的**)需要發動機把油放到活塞裡,火花塞點火,推動活塞做功,轉換成動能**換後的**),供給其他系統讓車子上跑起來

babel/core就是 活塞轉動做功這個過程,那要燃燒需要個東西

babel/cli是火花塞,通過這個我們就可在 cmd,終端 執行babel src/test.js這樣就開始轉換test.js

可能這個自帶得發動機你不太滿意,有些耗油,還時不時熄火,發動機廠商提供了些 工具來diy,這些工具就是babel/plugin*廠商在提供工具得過程中,發現大家很多需求是一樣得,那把它組裝在一起,搞個套件,拉來就用,這個就是babel/preset-env*

那有可能你的車子只能用 93# 汽油,這會加油站只有柴油,那你得有個裝置做個轉換,這個就是babel/plofill做個相容,這個相容很粗暴,管它是 #97 #94,柴油,花生油,菜籽油什麼都一把梭得都給轉了,那可能 你這個車 其實 #94號油也是能跑的,不想這麼粗暴,所以就出來了babel/runtime*需要的轉才轉換下。

那通過這個比喻,我們再來總結下

ok,babel 本就這些組成,看到這,你知道了babel 的設計,主要組成部分了麼。

哦哦,不是還有個 .babelrc/babel.config.js 沒講麼,是哦,上面這些配置總得放在乙個地方,.babelrc/babel.config.js 就是放這些配置地方,例如

複製**

第二:地基,框架,庫的地基就是它是為了解決什麼問題出現的,在它之前有什麼解決辦法?它的解決思路是什麼?(關注它的設計思路),解決思路的落地是怎麼樣的?(整個框架有分為了哪些大的模組,分別幹什麼事),這樣學習開始比較慢,後面有意思了,腦子裡是網狀的

看到這,讀者朋友可以放下手機,心裡默默捋一下,下次面試問babel,你把babel的設計,組成 有條理的講出來,肯定會加分

完畢,睡覺去了,我的妞都開始說夢話了,下篇講具體的配置

babel入門系列之babel cli命令列

安裝 babel cli 7.7.7 babel core 7.7.7 1.d,out dir out 指定輸入目錄,編譯輸出到指定目錄 npx babel src d lib 2.source maps true,false,inline,both 增加source map檔案 npx babel...

關於babel官網的學習

提起babel,前端er大概都不陌生。但是為什麼要有babel呢?解決了什麼問題?怎麼使用babel呢?注意點在哪?以下就從這幾個方面總結一下我關於babel學習的結果吧。為什麼要有babel呢?距離es2015提出已經有幾年了,各個瀏覽器廠商也在積極地支援著各個好用的es6的新特性和新語法。但是還...

opencv系列學習 2

傅利葉變換會將影象分解成其正弦和余弦分量。換句話說,它將影象從空間域轉換到頻率域。這個想法是,任何函式都可以用無限的正弦和余弦函式之和精確地近似。傅利葉變換是一種方法。數學上,二維影象的傅利葉變換為 include opencv2 core.hpp include opencv2 imgproc.h...