公众号
明天解说如何在 Node.js 我的项目中应用 Babel。
后面《手把手教你如何配置Babel的系列》文章中咱们讲到,Babel会把新的语言个性降级解决,转换成指标环境反对的语法,并且对指标环境不反对的API增加Polyfill。文章中提到的指标环境,都是特指浏览器,那么Node环境如何应用呢?
接下里,咱们用Koa创立一个简略的服务器,而后一步一步的解说集成Babel。
创立一个node我的项目
首先,创立一个node我的项目的文件夹,并进入
mkdir babel-node-example cd babel-node-example
初始化我的项目
npm init
咱们应用Koa创立一个简略的服务,咱们须要装置Koa依赖
npm install koa --save
装置结束之后,创立一个src文件夹,进入src文件夹,增加index.js文件
mkdir src && cd "$_" && touch index.js
通过require形式导入了Koa,创立一个简略的Koa服务
//这里咱们通过require形式导入了Koaconst Koa = require('koa')import Koa from "koa"const app = new Koa()// 端口const PORT = 3000app.use(async (ctx, next) => { ctx.body = { code: 0, message: "success", data: {} } next()})app.listen(PORT, () => { console.log(`Server is listening ${PORT},http://localhost:${PORT}`)})
在package.json的script外面增加如下命令
{ "start": "node ./src/index.js" }
而后在我的项目根目录上面执行 npm run start
> $ npm run babel:demo > node ./src/babel/index.jsServer is listening 3000,http://localhost:3000
而后关上http://localhost:3000/ ,咱们将失去如下后果
{ code: 0, message: "success", data: { }}
好了,这所有看似很完满,然而如果把 const Koa = require('koa')
换成import Koa from "koa"
又会有什么成果呢?
// const Koa = require('koa')import Koa from "koa"const app = new Koa()// 端口const PORT = 3000app.use(async (ctx, next) => { ctx.body = { code: 0, message: "success", data: {} } next()})app.listen(PORT, () => { console.log(`Server is listening ${PORT},http://localhost:${PORT}`)})
从新执行npm run start
看一下控制台输入
能够看到报错了:SyntaxError: Cannot use import statement outside a module
起因是不能应用import
,此刻如果就是想用import 怎么办呢?那么就须要借助@babel/node
.
@babel/node
接下来,一步一步教你如何集成@babel/node.
装置Babel相干依赖
npm install -D @babel/core @babel/cli @babel/preset-env npm install -D @babel/node
- @babel/core是Bable进行代码转换的外围,@babel/cli,@babel/node都依赖他
- @babel/cli 是一个内置的 CLI,能够通过命令行编译文件
- @babel/preset-env 是一个预设汇合,容许您应用最新的 JavaScript,他会依据指标环境对代码降级解决(这里说的不谨严,具体能够去看《手把手教你如何配置Babel(3)—实在我的项目中如何去打补丁》)
- @babel/node 是一个与 Node.js CLI 完全相同的 CLI,在运行之前应用 Babel 预设和插件进行编译,执行的时候会占用大量内存空间,Babel官网不倡议在生产环境应用
配置.babelrc文件
{ "presets": [ "@babel/preset-env" ]}
批改package.json中script的 start命令
{ "start": "babel-node ./src/index.js"}
而后运行 npm run start
这时候控制台就不会报错了。
上面补充一个知识点,介绍一下nodemon
nodemon
nodemon用来监督node.js应用程序中的任何更改,并主动重启服务,非常适合用在开发环境中
nodemon只是简略的包装你的node应用程序,并监控任何曾经扭转的文件。nodemon只是node的替换包,只是在运行脚本时将其替换命令行上的node。
装置
# 本地装置npm install --save-dev nodemon
上面用nodemon形式启动服务。批改start命令
{ "start": "nodemon --exec babel-node ./index.js",}
这样每次咱们批改index.js命令,都不必重新启动 npm run start了。更多nodemon只是能够去查看 nodemon Git地址:github.com/remy/nodemon#nodemon