国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

給我一個 babel,還你一條完整前端工具鏈

開發 開發工具
babel 是一個轉譯器,暴露了很多 api,用這些 api 可以完成代碼到 AST 的 parse,AST 的轉換,以及目標代碼的生成。

你不知道的 babel

提到 babel,你會想到什么?

  • 可以把項目中的 es6、es7 等代碼轉成目標環境支持的代碼

  • 可以自動 polyfill 目標環境不支持的 api

  • taro (小程序轉譯工具)是基于 babel 實現的

  • babel 的插件很豐富

  • 我們公司現在用 babel 來編譯 typescript,不用 tsc 了

  • 我基于 babel 做過自動埋點的功能,得到了領導的夸獎

  • ...

其實 babel 能做的不只是這些,它能做 3 類事情:

轉譯 esnext、typescript、flow 等到目標環境支持的 js

這個是最常用的功能,用來把代碼中的 esnext 的新的語法、typescript 和 flow 的語法轉成基于目標環境支持的語法的實現。并且還可以把目標環境不支持的 api 進行 polyfill。

babel7 支持了 preset-env,可以指定 targets 來進行按需轉換,轉換更加的精準,產物更小。

一些特定用途的代碼轉換

babel 是一個轉譯器,暴露了很多 api,用這些 api 可以完成代碼到 AST 的 parse,AST 的轉換,以及目標代碼的生成。

開發者可以用它來來完成一些特定用途的轉換,比如函數插樁(函數中自動插入一些代碼,例如埋點代碼)、自動國際化、default import 轉 named import 等。

現在比較流行的小程序轉譯工具 taro,就是基于 babel 的 api 來實現的。

代碼的靜態分析

對代碼進行 parse 之后,能夠進行轉換,是因為通過 AST 的結構能夠理解代碼。理解了代碼之后,除了進行轉換然后生成目標代碼之外,也同樣可以用于分析代碼的信息,進行一些檢查。

babel 還能做什么?

babel 是前端業務開發和工具鏈開發中必不可少的工具,我們每天都在用,可是你有想過這些問題么:

  • 怎么寫一個 babel 插件來做自定義的代碼轉換?

  • 業務開發中有哪些地方可以用 babel 來做自動化?

  • babel 是怎么實現的?

還有

  • linter 是怎么實現的?

  • typescript 類型檢查是怎么實現的?

  • 壓縮混淆工具的原理是什么?

  • 打包工具是如何分析代碼依賴關系的?

  • api 文檔如何自動生成?

上面這些都可以用 babel 來實現,或許你并沒有想過 babel 有這么大的能量, 學會了 babel,絕對能讓你提升一個段位 。

基于 babel 實現完整工具鏈

我們來理一下這些工具的實現思路(所有下面列的工具都有實現代碼放在 github)

自動國際化

國際化是把寫死的字符串字面量換成從資源包取值的方式,babel 可以分析出代碼中的字符串字面量,把它替換成一個函數調用語句,然后自動引入資源包?;?babel,我們完全可以做到自動國際化。

自動生成 api 文檔

我們在寫 api 的時候,會在上方添加注釋,那么是不是能把這些注釋內容還有關聯的函數、class 的信息提取出來,用一定的模版來生成 api 文檔呢?沒錯,babel 可以做到。

linter

我們整天用 eslint、stylelint 來做代碼規范的檢查,其實他們不過就是對 AST 做了校驗,這些我們用 babel 完全可以做到??梢曰?babel 實現 eslint。

type checker

typescript 是給代碼添加了靜態的類型信息,可以在編譯期間進行類型檢查,也可以輔助做代碼的智能提示,現在基本是前端必備技能了。可是你有想過 typescript 怎么實現的么?在小冊中 我們會手寫一個 ts type checker,讓你真正理解 typescript!

壓縮混淆

前端代碼上生產肯定要做壓縮,做混淆,這個我們整天都在用,可是你知道他的實現原理么,我們能不能用 babel 來實現一下。答案是肯定的,在小冊中 我們會實現壓縮混淆的功能 。

js 解釋器

v8 引擎的實現原理是什么,解釋型語言都是怎么解釋代碼的。我們能不能實現一個 js 解釋器,是可以的,《babel 插件通關秘籍》小冊中我們會基于 babel parser 實現一個 js 解釋器。

手寫 babel

可能你會問,上面的這些都是基于 babel,那如果沒有 babel 呢?

沒有 babel 我們就實現一個 babel,小冊最后 我們會實現一個簡易但可用的 babel,讓你真正理解 babel 的原理,真正掌握 babel 。

上面的解釋器和類型檢查的內容,王垠賣 12000,見下圖,所以這本小冊絕對超值。

 

 

 

 

大綱

上面說了很多小冊的內容,下面是小冊的完整目錄:

 

 

 

 

不只是 babel

雖然上面的實戰都是基于 babel 的,可是你學到的只是 babel 么?

不是的,上面的實戰案例涉及到完整的工具鏈,從文檔生成、lint、type check、壓縮混淆到 js 解釋器等等,這幾乎是前端開發的閉環了。 以此為抓手,學到的是整條工具鏈的實現思路 。

上面的工具還是集中在前端領域,但其中轉譯器、解釋器的實現思路確是通用的,編譯原理主要就是學編譯器、轉譯器、解釋器三部分, 學完整本小冊,相信也能幫助你入門編譯原理 。

總結

babel 是前端領域幾乎是必備的工具,基于它可以完成很多功能,甚至是打造整條工具鏈,我們在小冊中會實現 linter、type cheker、壓縮混淆、api 文檔自動生成、js 解釋器等等一系列功能。其中解釋器和類型檢查的功能在王垠那里能賣 12000,對比之下,這本小冊內容和價格絕對很良心了。

如果說 babel api 是術,那么基于 babel 學到的編譯原理、工具鏈實現思路就是道了。掌握了 babel、掌握了工具鏈,入門編譯原理,絕對能讓你提升一個段位。

 

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

2018-03-29 02:29:27

2017-09-17 08:01:24

小房子Covo小型住宅

2017-01-12 14:52:51

代碼

2017-09-07 19:21:20

Java語言Iodine

2010-04-13 16:57:01

2014-04-22 10:44:34

垃圾郵件盈世綠色郵箱

2018-01-23 10:25:40

Win10網絡命令

2025-10-16 07:05:00

SparkSQLSpark 內核

2019-03-28 10:09:49

內存CPU硬盤

2011-03-21 17:19:12

LAMPUbuntu

2025-05-20 00:00:00

2013-02-01 16:06:01

云安全云計算云谷

2021-12-09 11:31:16

跨域后端開發

2022-09-13 08:01:58

短鏈服務哈希算法字符串

2015-03-10 11:21:44

JavaScript組JavaScript

2025-06-04 08:20:30

2011-05-12 14:43:57

MYSQL

2011-12-29 20:58:46

Windows Pho

2021-04-16 07:04:53

SQLOracle故障

2011-06-24 09:20:04

編程語言
點贊
收藏

51CTO技術棧公眾號

久久精品亚洲精品国产欧美| 日韩高清中文字幕| 激情欧美丁香| 国产精品国产一区| 欧美日本一区| 欧美精品一区二区久久| 丝袜诱惑一区二区| 欧美hdxxxxx| 影音先锋中文在线视频| 99久久婷婷国产综合精品首页| 成人影院www在线观看| 中文字幕在线资源| 中文字幕免费在线| 成年人视频在线| av网站网址在线观看| japanese国产精品| 欧美日韩激情视频8区| 亚洲日本va中文字幕久久| 91网站视频在线观看| 另类视频在线观看| 午夜免费久久久久| 国产一伦一伦一伦| 好男人免费精品视频| 飘雪影院手机免费高清版在线观看| 中文官网资源新版中文第二页在线观看| 在线看a视频| 日韩精品极品| 欧美日韩hd| 久久精品国产**网站演员| 一区二区三区不卡视频在线观看 | 欧美日韩mp4| 91官网在线观看| 91久久精品午夜一区二区| 精品国产乱码久久久久久牛牛| 亚洲天堂2020| 九九九九精品| 久久久久久亚洲精品美女| 中日韩av电影| 午夜精品美女久久久久av福利| 日韩三级影院| 国产精品女人毛片| 欧美激情第一页在线观看| 日韩综合在线视频| 日本成人黄色免费看| 色成人综合网| 最新日韩在线| 亚洲第一精品在线| 成人福利影院| 波多野结衣在线aⅴ中文字幕不卡| 欧美综合第一页| 丁香花视频在线观看| 久久精品九九| 欧美色男人天堂| 91亚洲精品久久久| 成人免费观看视频在线观看| 91福利在线视频| 天天影视天天精品| 亚洲福利电影网| 日本高清不卡的在线| 久久久久久久久久久福利| free性欧美| 国产麻豆成人传媒免费观看| 亚洲女人被黑人巨大进入al| 69精品丰满人妻无码视频a片| 欧美日韩国产色综合一二三四| 91精品黄色片免费大全| 国产日韩在线看| 国产激情小视频在线| 综合天堂av久久久久久久| 欧美午夜影院一区| 欧美午夜精品久久久久久蜜| 榴莲视频成人app| 中文字幕精品久久| 精品一区二区三区中文字幕老牛| 国产97在线观看| 日本色综合中文字幕| 欧美少妇一区| xxx性欧美| 免费av成人在线| 日韩中文在线中文网在线观看| 在线香蕉视频| 亚洲精品97久久| 日韩成人三级| 久久久精品在线视频| 亚洲va欧美va人人爽| 国产日韩第一页| 久久久久久久久丰满| 美女啪啪无遮挡免费久久网站| 91精品久久| 欧美嫩在线观看| 粉嫩av一区二区三区四区五区| 色妞色视频一区二区三区四区| 免费在线观看的电影网站| 国产视频一区二区在线| 妺妺窝人体色777777| 久久伊99综合婷婷久久伊| 欧美精品无码一区二区三区| 国产精品成人一区二区三区夜夜夜| 日本不卡高字幕在线2019| 免费一区二区三区四区| 亚洲成人动漫一区| 福利在线一区二区三区| 亚洲欧洲一级| 久久精品影视伊人网| 草草视频在线| 亚洲日本中文字幕免费在线不卡| 久久久pmvav| 国产精品久久久久婷婷二区次| 影音先锋男人的网站| 久久爱www成人| 国产最新精品视频| 精品网站aaa| 中文字幕自拍vr一区二区三区| 中文字幕av在线播放| 亚洲电影免费观看| 九一久久久久久| 伊人久久精品一区二区三区| 国产一级大片免费看| 日韩精品视频免费专区在线播放 | 只有这里有精品| 日韩国产欧美| 欧美丰满片xxx777| 欧美人xxx| 一本久久综合亚洲鲁鲁五月天| 亚洲最大网站| 午夜欧美大片免费观看| 亚洲激情精品| 性生活免费在线观看| 国产成人精品在线看| 日韩黄色短视频| 亚洲第一精品福利| 调教一区二区| 青青a在线精品免费观看| 99精品视频免费观看视频| 鲁丝片一区二区三区| 91成人免费| 国产欧美丝袜| 另类图片国产| 啦啦啦啦免费高清视频在线观看1| 国产精品中文字幕日韩精品| 黑森林精品导航| 7878成人国产在线观看| 日本少妇精品亚洲第一区| 亚洲国内在线| 亚洲一区在线观看视频| 美女日韩欧美| 欧美成人黄色网址| 久久综合国产精品台湾中文娱乐网| 91免费在线播放| 欧美日韩亚洲一区三区| 韩日在线视频| 成人黄色av片| 亚洲一区二区福利| 久久99国内精品| 超碰在线网址| 亚洲一区中文字幕在线观看| 欧美成人精品1314www| 日韩综合小视频| 亚洲福利视频免费观看| 超碰超碰97| 国产精品www色诱视频| 久久国产婷婷国产香蕉| 亚州av电影免费在线观看| 亚洲国产精品久久久久久| 你懂的一区二区三区| 黄色片视频在线免费观看| 夜夜嗨av一区二区三区免费区| 久久国产精品毛片| 亚洲国产欧美日本视频| 日产精品高清视频免费| 亚洲视频一二三区| 亚洲午夜av| 成人影院入口| 视频一区不卡| 亚洲精品丝袜日韩| 免费看精品久久片| 欧美黑人猛交的在线视频| 国产91在线免费| 欧美大尺度激情区在线播放| 中文字幕精品一区二区三区精品 | 日韩欧美99| 97色在线播放视频| www.xxxx精品| 国产亚洲欧美日韩精品| 久久综合久中文字幕青草 | 国产www精品| 国产人妻人伦精品| 男人天堂亚洲| 澳门成人av| 欧美巨大xxxx| 国产成人1区| 美女一区2区| 91视频一区| 亚洲一区二区动漫| 九九久久精品视频| 狠狠久久亚洲欧美专区| 久久天天做天天爱综合色| 亚洲伦伦在线| 在线视频亚洲欧美中文| 美女露胸视频在线观看|