我们在使用Node写服务端代码的时候,一般是用commonJS的写法写的,但是如果考虑到代码复用什么的,还是希望可以用es6的写法去写。但是目前node是不支持import等用法的,所以我们需要用Babel来做转义。
以koa为例:
首先,我们设计工程结构代码都在src文件夹下
src下写一个index.js
import Koa from "koa"
const app = new Koa();
app.use(async ctx => {
ctx.body = 'Hello World';
});
app.listen(3000);
配置.babelrc来处理es6的转义
{
"presets": [
"@babel/preset-env"
],
"plugins": [
"@babel/plugin-transform-runtime"
]
}
开发的时候,我们用nodemon来监听js文件变更,如果有文件变化,自动重启服务。配置下modemon.json
{
"watch": [
"src/**/*.js"
],
"execMap": {
"js": "babel-node"
},
"env": {
"NODE_ENV": "development"
}
}
开发环境下,我们是用babel-node 来做的运行时转义,但是在产线不能这么用,需要用babel-cli转义成commonjs。这里可以直接看完整的package.json
{
"dependencies": {
"@babel/cli": "^7.12.1",
"@babel/core": "^7.12.3",
"@babel/node": "^7.12.1",
"@babel/plugin-transform-runtime": "^7.12.1",
"@babel/preset-env": "^7.12.1",
"koa": "^2.13.0",
"nodemon": "^2.0.6"
},
"name": "koa2-es6",
"version": "1.0.0",
"main": "index.js",
"devDependencies": {},
"scripts": {
"dev": "nodemon src/index.js",
"build":"babel src --out-dir dist",
"start":"node dist/index.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"description": ""
}