乐趣区

关于node.js:如何在-Nodejs-项目中使用-Babel

公众号

明天解说如何在 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 形式导入了 Koa
const Koa = require('koa')
import Koa from "koa"

const app = new Koa()
// 端口
const PORT = 3000

app.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.js

Server 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 = 3000

app.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

退出移动版