老树新芽,在ES6下使用Express
要让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 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的文件上传了。
把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相关推荐
- 老树新芽——矩估计遇到神经网络
目录 老树新芽--矩估计遇到神经网络 问题 解决方案 \(\text{GARCH}(1,1)\) 模型的神经矩估计设想 代码实现 验证估计结果 \(\omega\) \(\alpha\) \(\bet ...
- windows下nodejs express安装及入门网站,视频资料,开源项目介绍
windows下nodejs express安装及入门网站,视频资料,开源项目介绍,pm2,supervisor,npm,Pomelo,Grunt安装使用注意事项等总结 第一步:下载安装文件 下载地址 ...
- 深入浅出CChart 每日一课——快乐高四第五十七课 新的起点,炫彩界面库之老树新芽
CChart对多种DirectUI库具有良好的适配性,炫彩界面库也不例外.前面已经有两篇关于炫彩界面库的课程,分别是第17课"深入浅出CChart 每日一课--第十七课 时尚加潮流,Dire ...
- 老树新芽 体验Visual Basic 9.0新功能
前言 "Visual Basic code-named Orcas"(Visual Basic 9.0)对基于"Visual Basic code-named Whidb ...
- 老子研究文献知识发现数据竞赛
大赛介绍 赛事背景 为提高当今社会的整体数据素养和数据意识,提升公众的数据技能水平,长三角产教融合协同创新中心联合华东师范大学调查与数据中心.同方知网(北京)技术有限公司上海分公司.和鲸科技,举办数据 ...
- express下使用ES6 - dtdxrk - 博客园
express下使用ES6 1 2 3 4 5 6 7 8 9 //环境切换配置 package.json scripts:{ "service": "NODE_ENV= ...
- express下使用ES6
//环境切换配置 package.json scripts:{ "service": "NODE_ENV=production PORT=3000 npm start&q ...
- express 的 middleware 设计
还没用express写过server,先把部分源码撸了一遍,各位大神求轻拍. express入口文件在lib文件夹下的express.js,其向外界暴露了一些方法. 最主要的(express.js 第 ...
- 什么是Express.js?
本文翻译自:What is Express.js? I am a learner in Node.js . 我是Node.js的学习者. What is Express.js ? 什么是Express ...
最新文章
- oracle数据库多表嵌套,sql – 在oracle中更新多个嵌套表中的多个记录
- 如何在FineUIMvc(ASP.NET MVC)中显示复杂的表格列数据(列表和对象)?
- 从一个深度图里面导出NARF特征
- 不输入密码执行sudo命令方法介绍
- vim学习、各类插件配置与安装【转】
- HDU1755 A Number Puzzle【全排列+暴力】
- Python图片爬虫
- Macbook尝试破解WIFI密码
- 银联网关支付接口规范
- 苹果微信默认字体样式
- 手势识别(一)--手势基本概念和ChaLearn Gesture Challenge
- 模拟淘宝侧边服务模块鼠标悬停效果的三种实现方式总结
- tushare实战分析美元黄金与美债收益率、利率的关系
- 仿微信语音功能的流程
- Android本地视频出现无法播放此视频问题
- Redis入门指南 第1章 简介 Redis的几项特性
- 项目3-2-----多肉
- 机器学习基础——分类算法之决策树、随机森林、Titanic乘客生存分类
- 英文学习20180327
- 从传统COM简析WinRT的Async(使用WRL)