关于express老项目如何摇身一变支持babel6+
如存在问题欢迎指正!!
如需转载🌍,请标注【chou world】http://blog.chouworld.cc。
B站:【IT界划水民工】
V❤️公众号:【小齿轮的环游日记】
起初
由于自己加入创业公司,需要立即搭建一个可以立杆见影的后台应用程序,为了快速开发,NodeJs
无疑不是最好的选择之一,所以在2017-2018年代,在NodeJs
商用小项目最光辉的时代,建立了express
代码模板开始使用。
摇身一变的原因
由于目前项目业务增加越来越多,接口调用越来越烦杂,所支持的异步操作越来越多,甚至有的时候还会用到进程通讯,所以无疑promise
黑洞或者说回调黑洞会使得新的同事来支持这个项目不方便,或者这个项目老业务时常不维护着实要看一伙,所以本人决定支持aysnc/await
等关键词,支持class
等新语法。
有的人说如果支持koa项目,不久都OK了,但是变身过于复杂,所以放弃。这里就不过多过多阐述,之后在别的栏目中再来阐述关于koa。
简单?百度就行?
本来想想这种低级操作估计百度一大堆,确实如此,但是大家过多集中于以下两点:
- 对于在express项目本身运行的时候支持ES6关键词及语法;
- 对于express项目中**代码本身**通过babel转换来达到支持ES6的效果;
其实这两点并没有问题,都是不错的解决方案,但是我作为开发者得从以下三点去考虑:
- 关于
VSCode
中如何debug
调试支持ES6的语法代码? - 关于开发环境直接运行就可以支持ES6的语法?
- 关于
pm2
支持ES6的情况?
其实在过程中还是对于网上多数的观点及做法,在你不了解babel
和nodemon
情况下看这些的都存在一定的混淆,其中这还不包括关于vscode在没有插件第一次建立.babelrc
文件无法识别的bug和babel7与6这两个版本天翻地覆的变化。
这里博主就遇到过以上两个大坑,导致机器npm环境直接损毁,这里有点夸张,主要是感觉程序环境洁癖导致的夸张说法,不知道有没有同仁也是如此。
开动
项目结构
对于原来项目,这里我们首先在原有的项目中的package.json
增加以下依赖作为提前准备工作。
1 | { |
并且新建文件.babelrc
,这里很关键,如下配置文件所示内容。
1 | { |
解决问题
【1】关于VSCode
中如何debug
调试支持ES6的语法代码?
使用VSCode中自带的launch文件启动改成如下配置即可。
1 | { |
【2】关于开发环境直接运行就可以支持ES6的语法?
这里需要使用到nodemon
,当然这里要是使用babel-node
,但是nodemon
监视文件修改,达到热更新效果,而不比每次都重启服务,配置如下:
依然是package.json
中srcipts
增加如下条目:
1 | nodemon src/app.js --exec babel-node --presets es2015,stage-2 |
【3】关于pm2
支持ES6的情况?
这里采用babel6
的转换功能,直接使src
文件夹转换(PS:符合ES6语法的需要编译)成支持ES5及以下的代码。
依然是package.json
增加如下条目:
1 | "scripts": { |
直接在服务器拉去dist文件夹以下的内容,pm2
直接运行即可。