要让Express在ES6下跑起来就不得不用转码器Babel了。首先新建一个在某目录下新建一个项目。而后跳转到这个目录下开始下面的操做。node
安装babel-cli
git
$ npm install --save-dev babel-cli
而后,能够安装一些presetses6
$ npm install --save-dev babel-preset-es2015 babel-preset-stage-2
如今就应该安装express
了github
$ npm install --save express
再建立一个咱们要运行的index.js
shell
$ 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 build
和npm 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的文件上传了。
$ 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通过了严格的测试。
安装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