欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

詳解如何用babel轉(zhuǎn)換es6的class語法-創(chuàng)新互聯(lián)

babel是一個轉(zhuǎn)碼器,目前開發(fā)react、vue項目都要使用到它。它可以把es6+的語法轉(zhuǎn)換為es5,也可以轉(zhuǎn)換JSX等語法。

成都創(chuàng)新互聯(lián)公司成立與2013年,先為赤城等服務建站,赤城等地企業(yè),進行企業(yè)商務咨詢服務。為赤城企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務解決您的所有建站問題。

我們在項目中都是通過配置插件和預設(多個插件的集合)來轉(zhuǎn)換特定代碼,例如env、stage-0等。

實際上babel可以通過自定義插件的方式實現(xiàn)任何代碼的轉(zhuǎn)換,接下來我們通過一個“把es6的 class 轉(zhuǎn)換為es5”的例子來了解一下babel。

內(nèi)容如下:

webpack環(huán)境配置

大家應該都配置過babel-core這個loader,它的作用是提供babel的核心Api,實際上我們的代碼轉(zhuǎn)換都是通過插件來實現(xiàn)的。

接下來我們不用第三方的插件,自己實現(xiàn)一個es6類轉(zhuǎn)換插件。先執(zhí)行以下幾步初始化一個項目:

  1. npm install webpack webpack-cli babel-core -D
  2. 新建一個webpack.config.js
  3. 配置webpack.config.js

如果我們的插件名字想叫transform-class,需要在webpack配置中做如下配置:

詳解如何用babel轉(zhuǎn)換es6的class語法

接下來我們在node_modules中新建一個babel-plugin-transform-class的文件夾來寫插件的邏輯(如果是真實項目,你需要編寫這個插件并發(fā)布到npm倉庫),如下圖:

詳解如何用babel轉(zhuǎn)換es6的class語法

紅色區(qū)域是我新建的文件夾,它上面的是一個標準的插件的項目結(jié)構,為了方便我只寫了核心的index.js文件。

如何編寫bable插件

babel插件其實是通過AST(抽象語法樹)實現(xiàn)的。

babel幫助我們把js代碼轉(zhuǎn)換為AST,然后允許我們修改,最后再把它轉(zhuǎn)換成js代碼。

那么就涉及到兩個問題:js代碼和AST之間的映射關系是什么?如何替換或者新增AST?

好,先介紹一個工具:astexplorer.net:

這個工具可以把一段代碼轉(zhuǎn)換為AST:

詳解如何用babel轉(zhuǎn)換es6的class語法

如圖,我們寫了一個es6的類,然后網(wǎng)頁的右邊幫我們生成了一個AST,其實就是把每一行代碼變成了一個對象,這樣我們就實現(xiàn)了一個映射。

再介紹一個文檔: babel-types :

這是創(chuàng)建AST節(jié)點的api文檔。

比如,我們想創(chuàng)建一個類,先到astexplorer.net中轉(zhuǎn)換,發(fā)現(xiàn)類對應的AST類型是 ClassDeclaration 。好,我們?nèi)ノ臋n中搜索,發(fā)現(xiàn)調(diào)用下面的api就可以了:

詳解如何用babel轉(zhuǎn)換es6的class語法

創(chuàng)建其他語句也是一樣的道理,有了上面這兩個東西,我們可以做任何轉(zhuǎn)換了。

下面我們開始真正編寫一個插件,分為以下幾步:

  1. 在index.js中export一個函數(shù)
  2. 函數(shù)中返回一個對象,對象有一個visitor參數(shù)(必須叫visitor)
  3. 通過astexplorer.net查詢出 class 對應的AST節(jié)點為 ClassDeclaration
  4. 在vistor中設置一個捕獲函數(shù) ClassDeclaration ,意思是我要捕獲js代碼中所有 ClassDeclaration 節(jié)點
  5. 編寫邏輯代碼,完成轉(zhuǎn)換
module.exports = function ({ types: t }) {
 return {
  visitor: {
   ClassDeclaration(path) {
    //在這里完成轉(zhuǎn)換
   }
  }
 };
}

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

當前名稱:詳解如何用babel轉(zhuǎn)換es6的class語法-創(chuàng)新互聯(lián)
轉(zhuǎn)載來源:http://chinadenli.net/article10/cdjsgo.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、小程序開發(fā)、企業(yè)網(wǎng)站制作、全網(wǎng)營銷推廣、定制開發(fā)、網(wǎng)站內(nèi)鏈

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設
日本在线不卡高清欧美| 国产中文字幕一区二区| 欧美日韩综合综合久久久| 日本熟妇熟女久久综合| 九九热精品视频在线观看| 自拍偷女厕所拍偷区亚洲综合| 经典欧美熟女激情综合网| 欧美加勒比一区二区三区| 欧美不雅视频午夜福利| 日本人妻精品有码字幕| 91欧美视频在线观看免费| 高清欧美大片免费在线观看| 午夜福利精品视频视频 | 国产精品一区二区视频成人| 美女黄色三级深夜福利| 两性色午夜天堂免费视频| 日韩高清中文字幕亚洲| 91麻豆精品欧美一区| 日本东京热加勒比一区二区| 中日韩美一级特黄大片| 欧美黑人暴力猛交精品| 亚洲欧美黑人一区二区| 黄色国产精品一区二区三区| 成人午夜爽爽爽免费视频| 人妻熟女欲求不满一区二区| 国内真实露脸偷拍视频| 成人精品一级特黄大片| 亚洲精品一区三区三区| 亚洲黄香蕉视频免费看| 精品人妻一区二区四区| 国产日韩欧美专区一区| 91天堂素人精品系列全集| 熟妇人妻av中文字幕老熟妇| 日韩国产亚洲欧美激情| 欧美日韩乱码一区二区三区| 精品日韩av一区二区三区| 国产精品午夜福利免费在线| 亚洲国产天堂av成人在线播放| 中文字幕高清不卡一区| 日本高清视频在线观看不卡| 一区二区三区四区亚洲专区|