当前位置: 首页 > Web前端 > JavaScript

Node.js项目中Babel的使用方法

时间:2023-03-27 00:40:08 JavaScript

公众号今天给大家讲解一下Node.js项目中Babel的使用方法。我们在之前的文章《手把手教你如何配置Babel的系列》中提到,Babel会将新的语言特性降级,转换成目标环境支持的语法,对目标环境不支持的API添加polyfill。文中所说的目标环境特指浏览器,那么如何使用Node环境呢?接下来我们使用Koa搭建一个简单的服务器,然后一步步讲解Babel的集成。创建一个node项目首先创建一个node项目文件夹,进入mkdirbabel-node-examplecdbabel-node-example初始化项目npminit我们使用Koa创建一个简单的服务,需要安装Koa依赖npminstallkoa--save安装完成后,创建src文件夹,进入src文件夹,添加index.js文件mkdirsrc&&cd"$_"&&touchindex.js通过require导入koa,创建一个简单的koa服务//HerewehaveimportedKoaconstKoa=require('koa')importKoafrom"koa"constapp=newKoa()//portconstPORT=3000app.use(async(ctx,next)=>{ctx.body={code:0,message:"success",data:{}}next()})app.listen(PORT,()=>{console.log(`服务器正在监听${PORT},http://localhost:${PORT}`)})在package.json的脚本中添加如下命令{"start":"node./src/index.js"}在项目根目录下执行npmrunstart>$npm运行babel:demo>node./src/babel/index.jsServerislistening3000,http://localhost:3000然后打开http://localhost:3000/,我们会得到如下结果{code:0,message:"success",data:{}}好吧,这一切看起来很完美,但是如果constKoa=require('koa')换成importKoafrom"koa"会有什么效果?//constKoa=要求('koa')从“koa”导入Koaconstapp=newKoa()//portconstPORT=3000app.use(async(ctx,next)=>{ctx.body={code:0,message:"success",data:{}}next()})app.listen(PORT,()=>{console.log(`服务器正在监听${PORT},http://localhost:${PORT}`)})再次执行npmrunstart,查看控制台输出,看到报错:SyntaxError:Cannotuseimportstatementoutsideamodule原因是无法使用import。如果此时只想使用import怎么办?然后你需要使用@babel/node。@babel/node下面一步步教大家如何集成@babel/node。安装Babel相关依赖npminstall-D@babel/core@babel/cli@babel/preset-envnpminstall-D@babel/node@babel/core是Bable的核心代码转换,@babel/cli,@babel/node都依赖他@babel/cli是一个内置的CLI,可以通过命令行编译文件@babel/preset-env是一个预设集合,可以让你使用最新的JavaScript,它会根据代码降级到目标环境(这里不严谨,详见《手把手教你如何配置Babel(3)—真实项目中如何去打补丁》)@babel/node是一个Node.jsCLI完全一样的CLI,运行前使用babelpresets和plugins编译,会占用大量内存执行过程中的空格,Babel官方不建议在生产环境使用配置.babelrc文件{"presets":["@babel/preset-env"]}修改package.json中脚本的启动命令{"start":"babel-node./src/index.js"}然后运行??npmrunstArt这时候控制台是不会报错的。再补充一个知识点介绍下nodemonnodemonnodemon是用来监听node.js应用的任何变化并自动重启服务的。非常适合在开发环境中使用。Nodemon只是一个简单的包,用于您的节点应用程序并监视任何已更改的文件。nodemon只是node的替换包,它只是在运行脚本时在命令行上替换node。安装#本地安装npminstall--save-devnodemon下面以nodemon方式启动服务。修改启动命令{"start":"nodemon--execbabel-node./index.js",}这样每次修改index.js命令时,都不需要重启npmrunstart。更多nodemon可以查看nodemonGit地址:github.com/remy/nodemon#nodemon