摘要:全局安裝本地安裝轉(zhuǎn)碼規(guī)則安裝完成后,我們可以看一下我們的文件,已經(jīng)多了選項。直接在線編譯提供一個在線編譯器,可以在線將代碼轉(zhuǎn)為代碼。
古語有云:“君子生非異也,善假于物;工欲善其事,必先利其器。”
由于有些低版本的瀏覽器還是不支持ES6語法,學(xué)習(xí)ES6,首先要學(xué)會搭建一個基本的ES6開發(fā)環(huán)境,利用工具,把ES6的語法轉(zhuǎn)變成ES5的語法。
1、使用Babel把ES6編譯成ES5
1.1 建立工程目錄
先建立一個項目的工程目錄,并在目錄下邊建立兩個文件夾:dist 和 src
1.2 初始化項目
在安裝Babel之前,需使用npm init先初始化我們的項目。通過cmd打開命令行工具,進入項目目錄,輸入下邊的命令:
npm init -y
命令執(zhí)行完成后,會在項目根目錄下生產(chǎn)package.json文件。
1.3 全局安裝Babel-cli
npm install -g babel-cli
1.4 本地安裝轉(zhuǎn)碼規(guī)則
npm install --save-dev babel-preset-es2015 babel-cli
安裝完成后,我們可以看一下我們的package.json文件,已經(jīng)多了devDependencies選項。
1.5 新建.babelrc
在根目錄下新建.babelrc文件,.babelrc是Babel的配置文件。
該文件是用來設(shè)置轉(zhuǎn)碼規(guī)則和插件的,基本格式如下:
{ "presets":["es2015"], "plugins":[] }
1.6 babel基本用法
# 轉(zhuǎn)碼結(jié)果輸出到標(biāo)準(zhǔn)輸出 $ babel example.js # 轉(zhuǎn)碼結(jié)果寫入一個文件 (--out-file 或 -o 參數(shù)指定輸出文件) $ babel example.js --out-file compiled.js 或者 $ babel example.js -o compiled.js # 整個目錄轉(zhuǎn)碼 (--out-dir 或 -d 參數(shù)指定輸出目錄) $ babel src --out-dir lib 或者 $ babel src -d lib # -s 參數(shù)生成source map文件 $ babel src -d lib -s
在src目錄下,新建index.js文件,使用ES6中的 let聲明和字符串模板
let name = "Bread and Dream"; let greeting = `hello ${name}`;
在命令行輸入
babel src/index.js -o dist/index.js
這時dist目錄會生成 index.js 文件,輸出結(jié)果為:
"use strict"; var name = "Bread and Dream"; var greeting = "hello " + name;
項目文件最終結(jié)構(gòu)
1.7 簡化轉(zhuǎn)化命令:
使用babel命令行,一大長串,很容易忘記,所以,我們可以進行改造,打開package.json文件,添加以下代碼
{ "scripts": { "build": "babel src/index.js -o dist/index.js" }, }
修改好后,以后我們就可以在命令行輸入 npm run build 進行轉(zhuǎn)換了。
(注:build是自定義的,為了語義化命名為build,當(dāng)然也可以命名成其他的,例如 compile)
2、webpack + Babel 構(gòu)建 ES6 開發(fā)平臺
2.1 搭建 webpack 基本文件目錄
首先全局安裝webpack(這里使用 webpack@3.12.0 版本)
npm install -g webpack@3
新建一個文件夾,命名為 webpack_demo;
命令行切換到 webpack_demo的文件目錄下,執(zhí)行下面的命令, 生成默認 package.json 配置文件
npm init -y
利用 npm 安裝 webpack
npm i --save-dev webpack@3
新建 webpack.config.js(用于配置 webpack 的運行方式),最簡單的配置如下:
module.exports= {
/* webpack 入口起點 */ entry:"./index.js", /* webpack 輸出 */ output:{ // 輸出 文件名 filename:"./test.js" },
}
2.2 安裝babel相關(guān)
安裝 babel-core 包
npm i --save-dev babel-core
安裝babel-preset-env 和 babel-preset-stage-0 包
npm i --save-dev babel-preset-env babel-preset-stage-0
babel-preset-env 是一個主流的 Babel 插件數(shù)組;Stage-X 是實驗階段的 Presets
2.3 將 webpack 和 Babel 結(jié)合在一起
需要在兩者之間建立一條紐帶,而通過 webpack 的 loaders 就可以生成這條紐帶,因此要修改 webpack.config.js 配置文件:
/ webpack loaders 配置 /
module:{
rules:[ { test:/.js$/, use:{ loader:"babel-loader", }, } ],
},
就是針對以 .js 結(jié)尾的文件使用 babel-loader。由于項目中還不存在 babel-loader,所以要先安裝該模塊:
npm i --save-dev babel-loader
通過使用 loader 語法配置 Babel 的 presets
使用 webpack 提供的方法,具體在 webpack.config.js 的 module.rules.use.options 中配置
/* webpack loaders 配置 */ module:{ rules:[ { test:/.js$/, use:{ loader:"babel-loader", options:{ presets:[ "babel-preset-env", "babel-preset-stage-0" ] } }, } ], },
最終的項目結(jié)構(gòu)為:
在當(dāng)前目錄下執(zhí)行 webpack 命令
webpack
輸入文件 index.js 中的ES6代碼已經(jīng)被轉(zhuǎn)換成輸出文件 test.js 中的 ES5 代碼了:
3、Traceur轉(zhuǎn)碼器
Google公司的Traceur轉(zhuǎn)碼器,也可以將ES6代碼轉(zhuǎn)為ES5代碼。
3.1 直接在頁面中使用:
寫ES6代碼,用:
注意:script標(biāo)簽的type屬性的值是module,而不是text/javascript。這是Traceur編譯器識別ES6代碼的標(biāo)識。
3.2 Traceur的命令行轉(zhuǎn)換方法:
首先需要用npm安裝。
$ npm install -g traceur
直接運行ES6代碼,以index.js為例
$ traceur index.js
將ES6輸出為ES5腳本
$ traceur --script index.js --out es5.js
為了防止有些特性編譯不成功,最好加上–experimental選項。
$ traceur --script index.js --out es5.js --experimental
4、直接在線編譯
Babel提供一個REPL在線編譯器,可以在線將ES6代碼轉(zhuǎn)為ES5代碼。
轉(zhuǎn)換后的代碼,可以直接作為ES5代碼插入網(wǎng)頁運行。
5、總結(jié)
使用babel搭建環(huán)境的順序:
創(chuàng)建項目創(chuàng)建兩個文件夾src和dist
使用npm init 初始化項目生成package.json(項目信息文件)
使用 npm install -g babel-cli 全局安裝
使用 npm install –save-dev babel-preset-es2015 babel-cli本地安裝
創(chuàng)建.babelrc文件(babel轉(zhuǎn)換的配置文件)
在src下創(chuàng)建js,編寫ES6語法
babel src/index.js -o dist/index.js轉(zhuǎn)碼生成ES5語法
babel 本質(zhì)就是一個 JavaScript 編譯器,通過:
將 JavaScript 源代碼解析成抽象語法樹(AST);
將源代碼的 AST 結(jié)果一系列轉(zhuǎn)換生成目標(biāo)代碼的 AST;
將目標(biāo)代碼的 AST 轉(zhuǎn)換成 JavaScript 代碼。
當(dāng)然,感興趣的小伙伴可以深入研究下babel及其插件的源碼,了解其運行機制,以便更全面的掌握ES6轉(zhuǎn)ES5的相關(guān)原理、機制。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/101923.html
摘要:前言最近打算把應(yīng)用到項目中,但是如何在開發(fā)環(huán)境瀏覽器端直接運行已經(jīng)發(fā)布一段時間了,現(xiàn)在大部分是在環(huán)境運行,或者通過編譯之后運行。主要實現(xiàn)用戶能夠在瀏覽器上直接運行語法。 前言 最近打算把es6應(yīng)用到項目中,但是如何在開發(fā)環(huán)境(瀏覽器端)直接運行es6?es6已經(jīng)發(fā)布一段時間了,現(xiàn)在大部分是在node.js環(huán)境運行,或者通過babel編譯之后運行。babel-browser主要實現(xiàn)用戶能...
摘要:本質(zhì)就是一個編譯器,通過將源代碼解析成抽象語法樹將源代碼的結(jié)果一系列轉(zhuǎn)換生成目標(biāo)代碼的將目標(biāo)代碼的轉(zhuǎn)換成代碼。項目構(gòu)建三開發(fā)環(huán)境本地服務(wù)器搭建源碼下載地址參考資料入門阮一峰中文文檔中文網(wǎng) 注:以下教程均在 windows 環(huán)境實現(xiàn),使用其他操作系統(tǒng)的同學(xué)實踐過程可能會有些出入。 ??在上一章 webpack 項目構(gòu)建:(一)基本架構(gòu)搭建 我們搭建了一個最基本的 webpack 項目,現(xiàn)...
摘要:前提是你已經(jīng)安裝了手動創(chuàng)建一個工作目錄以下是的內(nèi)容在目錄下創(chuàng)建一個這里寫我們的代碼接下來我們需要把語法編譯成我們?yōu)g覽器所識別的語法文件,那就用到我們的神奇在安裝之前我們要先初始化一下項目全局安裝輸入以下命令此時文件中就有的依賴了你以 1.前提是你已經(jīng)安裝了node,npm2.手動創(chuàng)建一個工作目錄 dist,src,index.html 以下是index.html的內(nèi)容 ...
摘要:安裝此過程沒有難點,略過下載完成后可以通過和來查看是否安裝成功以及版本后安裝新建一個目錄項目名稱進入該項目,然后一路回車即可。 node.js安裝 此過程沒有難點,略過 下載完成后可以通過node -v和npm -v來查看是否安裝成功以及版本后 webpack 安裝 新建一個目錄(項目名稱), 進入該項目,npm init, 然后一路回車即可。(會生成一個package.json...
摘要:相關(guān)依賴有和其余都是單元測試相關(guān)依賴注意,這里使用了。因為使用框架支持和使用是為了在單元測試里面使用的和等語法。腳本其中生成目錄的文件執(zhí)行單元測試編譯的編譯的在中,會根據(jù)去設(shè)置不同的入口文件。 環(huán)境搭建 Omi框架使用 Webpack + ES6 的方式去開發(fā);使用karma+jasmine來作為Omi的測試工具。 Karma介紹 Karma是一個基于Node.js的JavaScrip...
閱讀 2428·2021-11-23 10:04
閱讀 1497·2021-09-02 15:21
閱讀 894·2019-08-30 15:44
閱讀 1066·2019-08-30 10:48
閱讀 710·2019-08-29 17:21
閱讀 3559·2019-08-29 13:13
閱讀 1987·2019-08-23 17:17
閱讀 1790·2019-08-23 17:04