要讓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