摘要:雖然夠好用,奈何沒有瀏覽器對其可以完全支持,本文書寫時間,開發(fā)版號稱已經(jīng)支持的特性。開始安裝本系列假定讀者都有使用經(jīng)驗,如果還沒有,趕緊去這里了解并安裝吧。到此,我們的已經(jīng)準備就緒。
通過前面章節(jié)的講解,大家對ES2015的一些新語法有了初步的理解,之前我們的測試代碼都可以直接放入 Chrome Console 中直接運行,為了更好的學習后面的面向?qū)ο蠛湍K開發(fā),我先用一章介紹一下 Babel 和 Rollup。
ES2015雖然夠好用,奈何沒有瀏覽器對其可以完全支持,本文書寫時間,Chrome開發(fā)版號稱已經(jīng)支持99%的ES2015特性。
所以,我們需要借助一個可以幫助我們將ES6代碼翻譯為瀏覽器都100%支持的ES5代碼的工具,這就是本文的主角之一:Babel。
打開Babel官網(wǎng), 可以看到大大的介紹:
Babel is a JavaScript complier. Use next generation JavaScript today.
Babel是Javascript編譯器,可以讓我們現(xiàn)在就可以使用新的語法寫JavaScript,而不用擔心瀏覽器兼容的問題。
開始安裝:
本系列假定讀者都有NodeJS使用經(jīng)驗,如果還沒有,趕緊去這里了解并安裝吧。
我們可以使用
npm install --global babel-cli
這樣全局安裝Babel, 但是這并不是很好的做法,因為:
不同的項目可能需要依賴不同版本的Babel
不能絕對依賴某個版本的Babel,不夠靈活
所以,最好的做法是為每一個項目安裝Babel
創(chuàng)建項目目錄并安裝:
mkdir -p es2015-learning cd es2015-learning
創(chuàng)建文件package.json, 里面放入以下內(nèi)容:
{ "name": "es2015-learning", "version": "1.0.0" }
安裝Babel:
npm install --save-dev babel-cli
安裝完成后,我們的package.json文件會變成類似下面的:
{ "name": "es2015-learning", "version": "1.0.0", "devDependencies": { "babel-cli": "^6.9.0" } }
由于我們的babel安裝在項目中,所以我們無法直接在命令行中執(zhí)行 babel 命令,雖然可以用
./node_modules/.bin/babel
調(diào)用, 但是為了方便,我們需要在 package.json 中定義命令使用,修改 package.json 如下:
{ "name": "es2015-learning", "version": "1.0.0", "scripts": { "build": "babel src -d dist" }, "devDependencies": { "babel-cli": "^6.9.0" } }
這樣,我們就可以使用
npm run build
直接調(diào)用Babel為我們在src中的js代碼進行編譯到dist文件夾中,而不用每次都
./node_modules/.bin/babel src -d dist
很簡單,對吧?那趕緊試試看:
創(chuàng)建文件夾
mkdir src mkdir dist
在 src 中創(chuàng)建文件 main.js, 編輯代碼:
const PI = 3.1415926; alert(PI);
執(zhí)行命令:
$ npm run build //輸出 src/main.js -> dist/main.js
查看dist文件夾中的main.js文件,不出意外,babel 并沒有為我們做任何的轉(zhuǎn)變,因為:Babel 在 6.0以后不在默認啟用代碼轉(zhuǎn)換,實際上Babel默認沒有自帶任何轉(zhuǎn)換插件,這需要我們手動安裝一下,這里需要安裝ES2015 Preset插件
npm install babel-preset-es2015 --save-dev
安裝完成后,還需要告訴Babel啟用該插件,創(chuàng)建.babelrc文件,并在其中加入如下內(nèi)容,
{ "presets": ["es2015"] }
準備就緒,再次執(zhí)行:
npm run build
完成后,可以看到現(xiàn)在的dist/main.js已經(jīng)被轉(zhuǎn)換為:
"use strict"; var PI = 3.1415926; alert(PI);
這時候引用dist/main.js 到瀏覽器中,會一切運行正常。
到此,我們的Babel已經(jīng)準備就緒^_^。
但是,讓我們再看看下面的代碼:
// src/Human.js export default class Human{ } // src/main.js import Human from "./Human.js"; class Man extends Human{ } let man = new Man();
執(zhí)行
npm run build
查看 dist/main.js代碼(部分):
"use strict"; var _Human2 = require("./Human.js"); ... ...
這個時候如果我們在瀏覽器中引用main.js, 很遺憾是無法運行的,因此,我們還需要一個模塊加載器 (module bundler), 模塊加載器有很多,如:
webpack
Browserify
但是今天我要介紹是另外一個: Rollup
the next-generation JavaScript module bundler
下一代JavaScript模塊加載器,趕緊來認識認識吧!
安裝:
npm install --save-dev rollup
創(chuàng)建 rollup.config.js 文件,內(nèi)容加入:
module.exports = { entry: "src/main.js", dest: "dist/main.js" }
嘗試一下:
./node_modules/.bin/rollup -c
編譯出來的dist/main.js代碼如下:
"use strict"; class Human { } class Man extends Human { } let man = new Man();
很完美對不對? 但是,不支持ES2015的瀏覽器怎么辦?不用怕,我們將 Babel 和 Rollup 結(jié)合起來。
安裝rollup的babel插件:
npm install --save rollup-plugin-babel npm install --save babel-preset-es2015-rollup
修改rollup.config.js為:
let babel = require("rollup-plugin-babel"); module.exports = { entry: "src/main.js", plugins: [babel()], dest: "dist/main.js" }
修改.babelrc為:
{ "presets": ["es2015-rollup"] }
再次運行:
./node_modules/.bin/rollup -c
此時的dist/main.js代碼就可以被支持ES5的瀏覽器使用了!
最后我們修改我們的packages.json的build命令為:
"build": "rollup -c"
后面只要運行:
npm run build
就可以享受Babel和Rollup帶來的便利, 輕松使用ES2015語法編寫JS代碼啦!
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/83760.html
摘要:先來介紹下語法官方示例代碼模塊中對象暴露只需要即可,可以是任何類型的對象。手動導(dǎo)入模塊下某個對象,需要和模塊中定義的名字對應(yīng),順序無關(guān)。 看一下官方介紹: Language-level support for modules for component definition. JS在ES2015開始原生支持模塊化開發(fā),我們之前也曾借助于諸如: AMD CommonJS 等的模塊加載...
摘要:非官方字段集合官方字段請參考。下面介紹的是非官方字段,也就是各種工具定義的相關(guān)字段。詳細參考相關(guān)字段設(shè)置項目的瀏覽器兼容情況。相關(guān)字段測試庫。相關(guān)字段代碼檢查與優(yōu)化。 package.json 非官方字段集合 package.json 官方字段請參考 https://docs.npmjs.com/files/package.json。下面介紹的是非官方字段,也就是各種工具定義的相關(guān)字段...
摘要:通過這個教程學習如何使用打包工具配合來取代或處理樣式文件。使用這個命令安裝插件更新。如果你沒有項目的副本,你可以通過這條命令克隆在結(jié)束這個狀態(tài)下的項目為添加監(jiān)聽插件。在代碼塊內(nèi),添加如下內(nèi)容簡單起見我省略了文件的大部分內(nèi)容 通過這個教程學習如何使用JavaScript打包工具Rollup配合PostCSS來取代Grunt或Gulp處理樣式文件。 上一篇文章中,我們完成了使用Rollup...
摘要:使用進行模塊化打包在之前打包的過程中,命令行中輸出了一行,這表示并沒有收到任何模塊化的格式指令,因此會用默認的模塊標準來對文件進行打包。 前言 最近在做一個提供給瀏覽器和node同時使用的js的url模板工具類,在用什么打包工具上糾結(jié)了一段時間,正好有一天在知乎上看到了關(guān)于rollup的介紹,在自己試了試之后,就決定用rollup.js來打包自己的工具類了。 這篇文章主要是為了讓對ro...
摘要:所以,打包工具就出現(xiàn)了,它可以幫助做這些繁瑣的工作。打包工具介紹僅介紹款主流的打包工具,,,,以發(fā)布時間為順序。它定位是模塊打包器,而屬于構(gòu)建工具。而且在其他的打包工具在處理非網(wǎng)頁文件比如等基本還是需要借助它來實現(xiàn)。 本文當時寫在本地,發(fā)現(xiàn)換電腦很不是方便,在這里記錄下。 前端的打包工具 打包工具可以更好的管理html,css,javascript,使用可以錦上添花,不使用也沒關(guān)系...
閱讀 3221·2021-11-19 09:40
閱讀 3018·2021-09-09 09:32
閱讀 806·2021-09-02 09:55
閱讀 1404·2019-08-26 13:23
閱讀 2426·2019-08-26 11:46
閱讀 1243·2019-08-26 10:19
閱讀 2071·2019-08-23 16:53
閱讀 1086·2019-08-23 12:44