【前言】
nodejs是否支持es6语法呢,网上搜索大部分答案是要基于babel转一下才能支持,
其实目前nodejs的版本已经支持了es6语法了
【es6语法支持】
在nodejs官网可以看到关于es6支持的介绍,
ECMAScript 2015 (ES6) and beyond | Node.js
基于v8引擎
nodejs上基于现代化的v8引擎,所以支持es6相关语法,并且会不断迭代和优化性能
es6语法分级支持
es6语法分级,包括shipping,staged,in progress这几种级别,
shipping级别的语法,在nodejs上默认支持
staged级别的语法,在nodejs需要通过参数支持,--harmony
in progress级别的语法,建议不要使用
【nodejs支持es6语法查询】
在下面这个网站可以方便的查询到nodejs支持的es6语法
Node.js ES2015/ES6, ES2016 and ES2017 support
【es6 modules的支持】
nodejs原本支持commonjs的模块化规范,就是require这类型的
如果想要使用es6 export import的模块化规范,需要怎么做呢
可以参考这里:Modules: ECMAScript modules | Node.js v16.14.2 Documentation
启用的方式:将文件修改为mjs后缀,或者修改package.json中的type值
【基于es6开发nodejs npm包】
还有一种场景是要开发nodejs环境使用的npm包,但是想用es6语法,包括es6的模块化
而使用上述mjs的方式不是很方便,解决方案是使用rollup这个打包工具
通过rollup可以方便的将es6写的npm包到处为commonjs的规范
使用也比较简单
【总结】
1.开发nodejs业务
开发nodejs业务,可以直接使用es6语法+commonjs的模块化
2.开发nodejs npm包
开发nodejs npm包,可以使用es6语法写npm包源码,然后使用rollup导出为commonjs规范的包,然后发布