美文网首页Node.js全栈开发
用ES7的语法写Node.js后端代码

用ES7的语法写Node.js后端代码

作者: yuan8058 | 来源:发表于2019-01-26 23:42 被阅读1次

    开始准备

    首先安装babel-cli

    $ npm install --save-dev babel-cli

    然后添加一些presets

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

    再新建index.js文件,写些代码。

    $ touch index.js

    import http from 'http';http.createServer((req, res) => {  res.writeHead(200, {'Content-Type': 'text/plain'});  res.end('Hello World\n');}).listen(1337, '127.0.0.1');console.log('Server running at http://127.0.0.1:1337/');

    然后,在package.json中加上npm start脚本

    "scripts": {

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

    }

    现在,让我们启动服务器

    $ npm start

    现在,你可以在浏览器中访问http://127.0.0.1:1337/,并且看到hello world

    使用nodemon监听文件的修改

    我们能够使用nodeman来改善npm start脚本

    $ npm install --save-dev nodemon

    然后,我们再更新npm start脚本

    "scripts": {

    -  "start": "babel-node index.js"

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

    }

    然后,我们重启服务器

    $ npm start

    现在,你可以修改index.js中的代码,我们的服务器能够通过nodemon来自动重启。

    在服务器运行的过程中,修改Index.js中的代码,将Hello World改为Hi man

    如果你现在访问http://127.0.0.1:1337,你会看到服务器的欢迎语已经变成Hi man了。

    在产品模式下运行

    在产品模式下运行,我们要先编译下代码。

    首先,我们将index.js文件,移到lib/index.js

    $ mv index.js lib/index.js

    并且,要更新npm start脚本中index.js文件的路径

    "scripts": {

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

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

    }

    接下来,添加两个任务,npm run build和npm run serve

    "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 serve命令在产品模式下启动我们的服务器

    $ npm run build

    $ npm run serve

    我们可以新建个.gitignore文件来忽略dist目录

    $ touch .gitignore

    在.gitignore文件中,加上

    dist

    这可以确保我们不会提交编译后的代码到git

    保存Babel Options到.babelrc

    让我们创建一个.babelrc文件

    $ touch .babelrc

    然后在.babelrc中添加如下内容

    {

      "presets": ["es2015", "stage-2"],

      "plugins": []

    }

    现在,我们可以删除package.json中的options

    "scripts": {

    +  "start": "nodemon lib/index.js --exec babel-node",

    +  "build": "babel lib -d dist",

      "serve": "node dist/index.js"

    }

    测试服务器程序

    最后,让我们来为服务器写些测试脚本

    首先,安装mocha

    $ npm install --save-dev mocha

    然后,创建文件test/index.js

    $ mkdir test

    $ touch test/index.js

    import http from 'http';import assert from 'assert';import '../lib/index.js';describe('Example Node Server', () => {  it('should return 200', done => {    http.get('http://127.0.0.1:1337', res => {      assert.equal(200, res.statusCode);      done();    });  });});

    接下来,安装babel-register 作为require钩子

    $ npm install --save-dev babel-register

    然后,我们能添加npm test脚本

    "scripts": {

      "start": "nodemon lib/index.js --exec babel-node",

      "build": "babel lib -d dist",

      "serve": "node dist/index.js",

    + "test": "mocha --compilers js:babel-register"

    }

    现在,让我们来运行我们的测试

    $ npm test

    你应该会看见下面的输出

    Server running at http://127.0.0.1:1337/

      Example Node Server

        ✓ should return 200

      1 passing (43ms)

    好了,结束。

    相关文章

      网友评论

        本文标题:用ES7的语法写Node.js后端代码

        本文链接:https://www.haomeiwen.com/subject/ixgwjqtx.html