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

简单走起

安装babel-cli

$ npm install --save-dev babel-cli

然后,可以安装一些presets

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

现在就应该安装express

$ npm install --save express

再创建一个我们要运行的index.js

$ touch index.js

添加如下代码

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里添加运行的脚本

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

现在开始运行我们的server。

$ npm start

你现在就可以在http://127.0.0.1:4321下看到hello world了。

使用nodemon监视文件修改

我们可以修改npm start,添加对nodemon的引用。

$ 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:4321Example Node Server✓ should return 200 (61ms)1 passing (85ms)

OK,全文完!

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

老树新芽,在ES6下使用Express相关推荐

  1. 老树新芽——矩估计遇到神经网络

    目录 老树新芽--矩估计遇到神经网络 问题 解决方案 \(\text{GARCH}(1,1)\) 模型的神经矩估计设想 代码实现 验证估计结果 \(\omega\) \(\alpha\) \(\bet ...

  2. windows下nodejs express安装及入门网站,视频资料,开源项目介绍

    windows下nodejs express安装及入门网站,视频资料,开源项目介绍,pm2,supervisor,npm,Pomelo,Grunt安装使用注意事项等总结 第一步:下载安装文件 下载地址 ...

  3. 深入浅出CChart 每日一课——快乐高四第五十七课 新的起点,炫彩界面库之老树新芽

    CChart对多种DirectUI库具有良好的适配性,炫彩界面库也不例外.前面已经有两篇关于炫彩界面库的课程,分别是第17课"深入浅出CChart 每日一课--第十七课 时尚加潮流,Dire ...

  4. 老树新芽 体验Visual Basic 9.0新功能

    前言 "Visual Basic code-named Orcas"(Visual Basic 9.0)对基于"Visual Basic code-named Whidb ...

  5. 老子研究文献知识发现数据竞赛

    大赛介绍 赛事背景 为提高当今社会的整体数据素养和数据意识,提升公众的数据技能水平,长三角产教融合协同创新中心联合华东师范大学调查与数据中心.同方知网(北京)技术有限公司上海分公司.和鲸科技,举办数据 ...

  6. express下使用ES6 - dtdxrk - 博客园

    express下使用ES6 1 2 3 4 5 6 7 8 9 //环境切换配置 package.json scripts:{ "service": "NODE_ENV= ...

  7. express下使用ES6

    //环境切换配置 package.json scripts:{ "service": "NODE_ENV=production PORT=3000 npm start&q ...

  8. express 的 middleware 设计

    还没用express写过server,先把部分源码撸了一遍,各位大神求轻拍. express入口文件在lib文件夹下的express.js,其向外界暴露了一些方法. 最主要的(express.js 第 ...

  9. 什么是Express.js?

    本文翻译自:What is Express.js? I am a learner in Node.js . 我是Node.js的学习者. What is Express.js ? 什么是Express ...

最新文章

  1. oracle数据库多表嵌套,sql – 在oracle中更新多个嵌套表中的多个记录
  2. 如何在FineUIMvc(ASP.NET MVC)中显示复杂的表格列数据(列表和对象)?
  3. 从一个深度图里面导出NARF特征
  4. 不输入密码执行sudo命令方法介绍
  5. vim学习、各类插件配置与安装【转】
  6. HDU1755 A Number Puzzle【全排列+暴力】
  7. Python图片爬虫
  8. Macbook尝试破解WIFI密码
  9. 银联网关支付接口规范
  10. 苹果微信默认字体样式
  11. 手势识别(一)--手势基本概念和ChaLearn Gesture Challenge
  12. 模拟淘宝侧边服务模块鼠标悬停效果的三种实现方式总结
  13. tushare实战分析美元黄金与美债收益率、利率的关系
  14. 仿微信语音功能的流程
  15. Android本地视频出现无法播放此视频问题
  16. Redis入门指南 第1章 简介 Redis的几项特性
  17. 项目3-2-----多肉
  18. 机器学习基础——分类算法之决策树、随机森林、Titanic乘客生存分类
  19. 英文学习20180327
  20. 从传统COM简析WinRT的Async(使用WRL)

热门文章

  1. Go语言学习资料大全整理
  2. 一 简单句和并列句(2021-10-29)
  3. 《星际穿越》初解析——一部空前绝后的史诗科学巨作
  4. 碰撞检测——刚体加力
  5. tf.nn,tf.layers, tf.contrib模块介绍
  6. 多巴胺所表达的prediction error信号
  7. 网易云信Demo-注册400
  8. 关于新加坡IT薪酬和找工作网站
  9. idea 中ctrl+shift+数字的作用
  10. 点击button没有反应