老樹新芽,在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

相關文章
相關標籤/搜索