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