真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網站制作重慶分公司

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

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

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

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

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

內容如下:

webpack環(huán)境配置

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

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

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

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

詳解如何用babel轉換es6的class語法

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

詳解如何用babel轉換es6的class語法

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

如何編寫bable插件

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

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

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

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

這個工具可以把一段代碼轉換為AST:

詳解如何用babel轉換es6的class語法

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

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

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

比如,我們想創(chuàng)建一個類,先到astexplorer.net中轉換,發(fā)現類對應的AST類型是 ClassDeclaration 。好,我們去文檔中搜索,發(fā)現調用下面的api就可以了:

詳解如何用babel轉換es6的class語法

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

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

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

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


文章題目:詳解如何用babel轉換es6的class語法-創(chuàng)新互聯(lián)
標題路徑:http://weahome.cn/article/cdjsgo.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部