@@ -127,6 +127,16 @@ input.map(function (item) {
127
127
128
128
``` bash
129
129
$ npm install --global babel-cli
130
+ $ npm install --save babel-preset-es2015
131
+ ```
132
+
133
+ 然后在当前目录下,新建一个配置文件` .babelrc ` 。
134
+
135
+ ``` javascript
136
+ // .babelrc
137
+ {
138
+ " presets" : [' es2015' ]
139
+ }
130
140
```
131
141
132
142
Babel自带一个` babel-node ` 命令,提供支持ES6的REPL环境。它支持Node的REPL环境的所有功能,而且可以直接运行ES6代码。
@@ -181,10 +191,10 @@ $ babel -d build-dir source-dir -s
181
191
182
192
### 浏览器环境
183
193
184
- Babel也可以用于浏览器。它的浏览器版本,可以通过安装 ` babel-core ` 模块获取。
194
+ Babel也可以用于浏览器。但是,从Babel 6.0开始,不再直接提供浏览器版本,而是要用构建工具构建出来。如果你没有或不想使用构建工具,只有通过安装5.x版本的 ` babel-core ` 模块获取。
185
195
186
196
``` bash
187
- $ npm install babel-core
197
+ $ npm install babel-core@5
188
198
```
189
199
190
200
运行上面的命令以后,就可以在当前目录的` node_modules/babel-core/ ` 子目录里面,找到` babel ` 的浏览器版本` browser.js ` (未精简)和` browser.min.js ` (已精简)。
@@ -202,23 +212,27 @@ $ npm install babel-core
202
212
203
213
这种写法是实时将ES6代码转为ES5,对网页性能会有影响。生产环境需要加载已经转码完成的脚本。
204
214
205
- ` Babel ` 配合` Browserify ` 一起使用,可以生成浏览器能够直接加载的脚本。
215
+ 下面是` Babel ` 配合` Browserify ` 一起使用,可以生成浏览器能够直接加载的脚本。首先,安装` babelify ` 模块。
216
+
217
+ ``` bash
218
+ $ npm install --save-dev babelify babel-preset-2015
219
+ ```
220
+
221
+ 然后,再用命令行转换ES6脚本。
206
222
207
223
``` bash
208
- $ browserify script.js -t babelify --outfile bundle.js
224
+ $ browserify script.js -o bundle.js \
225
+ -t [ babelify --presets [ es2015 react ] ]
209
226
```
210
227
211
- 上面代码将ES6脚本` script.js ` ,转为` bundle.js ` 。浏览器直接加载后者就可以了,不用再加载 ` browser.js ` 。
228
+ 上面代码将ES6脚本` script.js ` ,转为` bundle.js ` ,浏览器直接加载后者就可以了 。
212
229
213
230
在` package.json ` 设置下面的代码,就不用每次命令行都输入参数了。
214
231
215
232
``` javascript
216
233
{
217
- // ...
218
234
" browserify" : {
219
- " transform" : [
220
- [" babelify" , { " stage" : [0 ] }]
221
- ]
235
+ " transform" : [[" babelify" , { " presets" : [" es2015" ] }]]
222
236
}
223
237
}
224
238
```
@@ -227,34 +241,63 @@ $ browserify script.js -t babelify --outfile bundle.js
227
241
228
242
Node脚本之中,需要转换ES6脚本,可以像下面这样写。
229
243
230
- 先安装` babel-core ` 。
244
+ 先安装` babel-core ` 和` babel-preset-2015 ` 。
245
+
246
+ ``` javascript
247
+ $ npm install -- save- dev babel- core babel- preset- 2015
248
+ ```
249
+
250
+ 然后,在项目根目录下新建一个` .babelrc ` 文件。
231
251
232
252
``` javascript
233
- $ npm install -- save- dev babel- core
253
+ {
254
+ " presets" : [" es2015" ]
255
+ }
234
256
```
235
257
236
258
然后在脚本中,调用` babel-core ` 的` transform ` 方法。
237
259
238
260
``` javascript
239
- require (" babel-core" ).transform (" code" , options);
261
+ var es5Code = ' let x = n => n + 1' ;
262
+ var es6Code = require (' babel-core' )
263
+ .transform (es5Code, {presets: [' es2015' ]})
264
+ .code ;
265
+ // '"use strict";\n\nvar x = function x(n) {\n return n + 1;\n};'
240
266
```
241
267
242
- 上面代码中,` transform ` 方法的第一个参数是一个字符串,表示ES6代码 。
268
+ 上面代码中,` transform ` 方法的第一个参数是一个字符串,表示需要转换的ES5代码,第二个参数是转换的配置对象 。
243
269
244
- Node脚本还有一种特殊的` babel ` 用法,即把` babel ` 加载为` require ` 命令的一个钩子。先将 ` babel ` 全局安装 。
270
+ Node脚本还有一种特殊的` babel ` 用法,即把` babel ` 加载为` require ` 命令的一个钩子。安装 ` babel-core ` 和 ` babel-preset-es2015 ` 以后,先在项目的根目录下面,设置一个配置文件 ` .babelrc ` 。
245
271
246
- ``` bash
247
- $ npm install -g babel
272
+ ``` javascript
273
+ // .babelrc
274
+ {
275
+ " presets" : [" es2015" ]
276
+ }
248
277
```
249
278
250
279
然后,在你的应用的入口脚本(entry script)头部,加入下面的语句。
251
280
252
281
``` javascript
253
- require (" babel/register" );
282
+ require (" babel-core /register" );
254
283
```
255
284
256
285
有了上面这行语句,后面所有通过` require ` 命令加载的后缀名为` .es6 ` 、` .es ` 、` .jsx ` 和` .js ` 的脚本,都会先通过` babel ` 转码后再加载。
257
286
287
+ 需要注意的是,Babel默认不会转换Iterator、Generator、Set、Maps、Proxy、Reflect、Symbol、Promise等全局对象,以及一些定义在全局对象上的方法(比如` Object.assign ` )。如果你用到了这些功能,当前的运行环境又不支持。就需要安装` babel-polyfill ` 模块。
288
+
289
+ ``` bash
290
+ $ npm install babel-polyfill --save
291
+ ```
292
+
293
+ 然后,在所有脚本头部加上一行。
294
+
295
+ ``` javascript
296
+ require (' babel-polyfill' );
297
+ // 或者
298
+ import ' babel-polyfill' ;
299
+ ```
300
+
258
301
### 在线转换
259
302
260
303
Babel提供一个[ REPL在线编译器] ( https://babeljs.io/repl/ ) ,可以在线将ES6代码转为ES5代码。转换后的代码,可以直接作为ES5代码插入网页运行
0 commit comments