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

9次阅读

共计 2269 个字符,预计需要花费 6 分钟才能阅读完成。

公众号

明天解说如何在 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

正文完
 0