ECMAScript的版本,每一年都會按期舉行會議,發佈各類標準,當前版本到了2019,但大部分人使用的瀏覽器,均可以支持es2015,也就是es6,要等到大部分瀏覽器都支持到最新版本,這樣須要一段很長的時間,那麼要用到最新的語法特性,就須要使用轉換工具,將最新的語法特性,儘量轉換爲主流的語法版本代碼,若是不能轉,那就只能不支持了,而babel就是這樣的轉換工具。css
配置babel,須要用到幾部分:ios
npm install --save-dev babel-core babel-preset-es2015 babel-preset-stage-2 npm install --save-dev babel-register babel-polyfill npm install --save-dev babel-plugin-transform-runtime
{ "presets": ["es2015", "stage-2"], "plugins": ["transform-runtime"], "comments": false }
試用命令行進行轉碼,看看轉嗎後的效果:git
npm install --global babel-cli
測試的代碼,箭頭函數,異步函數等等,babel.test.js:es6
import axios from 'axios' const foo = param =>{ return axios.get('www.example.com', {params : {}}) } async function test(){ } async ()=>{ await test() }
執行命令:github
babel babel.test.js -o compile.js
顯示的內容:npm
'use strict'; var _regenerator = require('babel-runtime/regenerator'); var _regenerator2 = _interopRequireDefault(_regenerator); var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator'); var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); var test = function () { var _ref = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee() { return _regenerator2.default.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: case 'end': return _context.stop(); } } }, _callee, this); })); return function test() { return _ref.apply(this, arguments); }; }(); var _axios = require('axios'); var _axios2 = _interopRequireDefault(_axios); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var foo = function foo(param) { return _axios2.default.get('www.example.com', { params: {} }); }; (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee2() { return _regenerator2.default.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: _context2.next = 2; return test(); case 2: case 'end': return _context2.stop(); } } }, _callee2, undefined); }));
好了,基本配置一次,也很好上手,對babel大概的流程有點了解,babel的原理也是挺簡單直接,但裏面須要處理的事情,真的夠多,讓js好寫了不少,其實babel就應該是一個簡單容易上手的工具纔好用。axios