Node.js基礎(chǔ)模塊babel使用詳解
前言:
由于ES6到ES7增加了很多新的語法,新特性的出現(xiàn)使得大家都希望通過新語法來提升自身的開發(fā)效率,但在之前的最新的node可能也沒有百分之百的支持ES2017的新特性,而且開發(fā)者在開發(fā)環(huán)境和生產(chǎn)環(huán)境中的版本一般是不同的,所以新特性的代碼可能不能完美的運行在線上環(huán)境中,為了解決難題,babel提供一系列的api來將新特性的語法轉(zhuǎn)化成低版本環(huán)境中能夠運行的代碼
安裝配置
babel是由一系列的組件構(gòu)成,所以我們在開發(fā)過程中,要從自行配置組件來開始使用babel的功能
我們先來安裝一下babel-cli,通過npm運行即可將babel-cli下載到我們的node_modules中
`npm install babel-cli`

使用babel
我們再項目中增加一個名為.babelrc的配置文件,用于指定babel以哪一個版本的ES來進行轉(zhuǎn)換,新增文件并作以下配置,這里記得要用雙引號,單引號的話會報錯
{
"presets":[
"es2016",
"stage-0"
]
}es表示了轉(zhuǎn)化的版本,stage則代表了提案的特性,這里我們可以來簡單了解一下
- stage0: strawman,任何TC39的成員都可以提出的草案,隨時被廢棄。
- Stage 1: proposal,這是一個比較正式的提議,表示要進一步討論。
- Stage 2: draft,在上一步的基礎(chǔ)上進行盡可能詳細(xì)的討論,到了這個階段后,只允許增量修改。
- Stage 3: candidate,對提案的討論基本完成,等待用戶的反饋,只有發(fā)生重大問題時才會修改。
- Stage 4: finished,經(jīng)過了充分的測試,已經(jīng)準(zhǔn)備好寫進新標(biāo)準(zhǔn)了。
實際例子
我們使用額外的組件來幫組我們完成轉(zhuǎn)化
npm install -save babel-core
安裝完轉(zhuǎn)化工具后進行編寫代碼
//babel.js let [aa,bb,cc] = [11,22,33] let a = [...'666'] console.log(a);
var babel = require('babel-core');
var fs = require('fs');
babel.transformFile("./babel/babel.js",function(err,res){
console.log(res.code);
})運行這個代碼的時候會發(fā)生錯誤,那是因為我們在第一步編寫babel配置的時候沒有下載相應(yīng)的模塊
‘Couldn't find preset "stage-0" relative to directory’
我們只要將相應(yīng)的模塊下載下來即可:
npm install babel-preset-stage-0
在package.json說明模塊已經(jīng)存在了

我們執(zhí)行看一下效果,已經(jīng)是按照語法做轉(zhuǎn)化出來了

類的轉(zhuǎn)化
我們都知道class是JS的一個語法糖,那么到底是如何實現(xiàn)的,其實可以通過babel來進行轉(zhuǎn)化

出現(xiàn)的代碼是比較長并且很復(fù)雜的,這樣即使是簡單的一個class轉(zhuǎn)化成ES5的寫法后會擔(dān)心是否存在某些問題
babel-polyfill
默認(rèn)情況下babel不會轉(zhuǎn)換一些新的API比如Promise等,可以使用第三方插件來進行解決
npm install -s babel-polyfill
我們這里去通過自己寫一個promise的例子然后轉(zhuǎn)化一下看看
import 'babel-polyfill'
function timeout(ms){
return new Promise((res,rej)=>{
setTimeout(res,ms,'done')
})
}
timeout(1000).then((val)=>{
console.log(val);
})轉(zhuǎn)化結(jié)果如下:

到此這篇關(guān)于Node.js基礎(chǔ)模塊babel使用詳解的文章就介紹到這了,更多相關(guān)Node.js babel內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
nodejs中使用archive壓縮文件的實現(xiàn)代碼
這篇文章主要介紹了nodejs中使用archive壓縮文件的實現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
教你在heroku云平臺上部署Node.js應(yīng)用
heroku是構(gòu)建在AWS之上的一個PaaS云平臺,現(xiàn)在支持Ruby, Node.js, Python, Java, 和 PHP,代碼的部署是通過git進行,編譯和運行都是自動的。2014-07-07
node將對象轉(zhuǎn)化為query的實現(xiàn)方法
本文主要介紹了node將對象轉(zhuǎn)化為query的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01
Node.js實現(xiàn)一個HTTP服務(wù)器的方法示例
這篇文章主要介紹了Node.js實現(xiàn)一個HTTP服務(wù)器的方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05
node.js中的buffer.toString方法使用說明
這篇文章主要介紹了node.js中的buffer.toString方法使用說明,本文介紹了buffer.toString的方法說明、語法、接收參數(shù)、使用實例和實現(xiàn)源碼,需要的朋友可以參考下2014-12-12

