老树新芽,在ES6下使用Express

要让Express在ES6下跑起来就不得不用转码器Babel了。首先新建一个在某目录下新建一个项目。而后跳转到这个目录下开始下面的操做。node

简单走起

安装babel-cligit

$ npm install --save-dev babel-cli

而后,能够安装一些presetses6

$ npm install --save-dev babel-preset-es2015 babel-preset-stage-2

如今就应该安装expressgithub

$ npm install --save express

再建立一个咱们要运行的index.jsshell

$ touch index.js

添加以下代码express

import Express from 'express';

let app = Express();

app.get('/', (req, res) => {
    res.send(`hello world!`);
});

app.listen(4321, () => {
    console.log('server running http://localhost:4321');
});

package.json里添加运行的脚本npm

"scripts": {
+   "start": "babel-node index.js --presets es2015,stage-2"
}

如今开始运行咱们的server。json

$ npm start

你如今就能够在http://127.0.0.1:4321下看到hello world了。babel

使用nodemon监视文件修改

咱们能够修改npm start,添加对nodemon的引用。app

$ npm install --save-dev nodemon

修改脚本。

"scripts": {
- "start": "babel-node index.js"
+ "start": "nodemon index.js --exec babel-node --presets es2015,stage-2" 
}

运行server

$ npm start

你如今就能够修改index.js,并且由于有了nodemon咱们的server会在修改发生后自动重启。

在server还在运行的时候,修改index.js,把hello world改为YO YO YO!。而后刷新页面,你就会看到页面内容已是YO YO YO!了。

准备生产环境

使用babel-node只是可让server运行起来,可是还不能上产品环境。

咱们须要预编译咱们的代码,那么如今就来开始准备上生产。

首先把index.js文件移到lib/index.js

$ mv index.js lib/index.js

接下来修改npm start脚本。

"scripts": {
- "start": "nodemon index.js --exec babel-node --presets es2015,stage-2"
+ "start": "nodemon lib/index.js --exec babel-node --presets es2015,stage-2"
}

这还不够,还须要添加两个task npm run buildnpm run server

"scripts": {
 "start": "nodemon lib/index.js --exec babel-node --presets es2015,stage-2",
+ "build": "babel lib -d dist --presets es2015,stage-2",
+ "serve": "node dist/index.js"
}

如今就可使用npm run build累预编译了。npm run server能够在产品环境启动server。

$ npm run build
$ npm run server

这样咱们就能够很快的重启server而不须要等着babel预编译文件。

刚刚新添加了dist目录,这个目录须要排除在git以外。因此给.gitignore文件添加dist

$ touch .gitignore
dist

这样就确保不会一不当心把gist的文件上传了。

把Babel选项保存到.Babelrc中

$ touch .babelrc

添加以下的配置。

{
  "presets": ["es2015", "stage-2"], 
  "plugins": []
}

如今就能够在npm脚本里去掉那些多余的选项了。

"scripts": {
+   "start": "nodemon lib/index.js --exec babel-node",
+   "build": "babel lib -d dist", 
    "serve": "node dist/index.js"
  }

测试server

最后咱们须要 保证server通过了严格的测试。

安装mocha

$ npm install --save-dev mocha

test/index.js里建立测试代码。

$ mkdir test
$ touch test/index.js
import http from 'http';
import assert from 'mocha';

import '../lib/index.js';

describe('Example Node Server', () => {
    it('should retur 200', done => {
        http.get('http://127.0.0.1:4321', res => {
            assert.equal(200, res.statusCode);
            done();
        });
    });
});

接下来安装babel-register

$ npm install --save-dev babel-register

而后添加npm test脚本。

"scripts": {
    "start": "nodemon es6_express_app.js --exec babel-node",
    "build": "babel lib -d dist",
    "server": "node dist/index.js",
 +   "test": "mocha --compilers js:babel-register"
  }

如今来运行测试。

$ npm test

你会看到下面的内容。

server running http://localhost:4321
  Example Node Server
    ✓ should return 200 (61ms)


  1 passing (85ms)

OK,全文完!

参考:example-node-server更多的资源也在这个repo下。

欢迎加QQ群讨论。iOS: 58099570 | Android: 330987132 | Nodejs:329118122

相关文章
相关标签/搜索