老树新芽,在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:4321
Example Node Server
✓ should return 200 (61ms)
1 passing (85ms)
OK,全文完!
参考:example-node-server更多的资源也在这个repo下。
老树新芽,在ES6下使用Express的更多相关文章
- node.js 下依赖Express 实现post 4种方式提交参数
上面这个图好有意思啊,哈哈, v8威武啊.... 在2014年的最后一天和大家分享关于node.js 如何提交4种格式的post数据. 上上一篇说到了关于http协议里定义的4种常见数据的post方法 ...
- Node.js在任意目录下使用express命令‘不是内部或外部命令’解决方法
1.一开始我只能在nodejs全局目录下使用express命令建一个新的项目,建在其他任意一个目录命令行都会提示"不是内部或外部命令",导致目录会乱,目录如下. 2.尝试了一会,发 ...
- windows下nodejs express安装及入门网站,视频资料,开源项目介绍
windows下nodejs express安装及入门网站,视频资料,开源项目介绍,pm2,supervisor,npm,Pomelo,Grunt安装使用注意事项等总结 第一步:下载安装文件下载地址: ...
- ES6下的Function.bind方法
在JavaScript的使用中,this的指向问题始终是一个难点.不同的调用方式,会使this指向不同的对象.而使用call,apply,bind等方式,可改变this的指向,完成一些令人惊叹的黑魔法 ...
- Node.js下基于Express + Socket.io 搭建一个基本的在线聊天室
一.聊天室简单介绍 采用nodeJS设计,基于express框架,使用WebSocket编程之 socket.io机制.聊天室增加了 注册登录模块 ,并将用户个人信息和聊天记录存入数据库. 数据库采用 ...
- ARM模式下创建Express Route
在Azure的ARM模式下,创建Express Route的命令和ASM模式下是有一些区别的. 本文将介绍在ARM模式下,如果创建Express Route的Circuit. 1. 查看支持的Serv ...
- 在Node.js环境下使用Express创建Web项目实例
序:如果你还不知道Node.js是什么,那么你可以先看看这篇:Node.js 究竟是什么?或者任何关于它的介绍. 一.安装Node.js 1.进入Node.js官网下载并安装 2.启动cmd输入命令查 ...
- Node.js环境下通过Express创建Web项目
通过Express命令创建项目 Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具. 使用 Express ...
- es6下 vue实例属性template不能使用
esm模式下 不能使用template,需要引入非esm的vue.js,查看vue源码的包的dist目录下 文件标有esm是支持ems,没有标记,就是不支持(这个知识,怎么说了,应该属于webpack ...
随机推荐
- vue-awesome-swiper轮播的使用
一.安装vue-awesome-swiper npm install vue-awesome-swiper --save 二.引入插件 main.js里面分别引入(记得有些电脑要引入样式) impor ...
- 开启Windows文件共享必须开启的两个服务
开启Windows文件共享必须开启的两个服务分别是: 1.Server服务. 2.Workstation服务. 如果文件共享丢失,可以去首先去查看这两个服务是否停止,如果停止,请启动或者重启.
- 使用 gitbook 写东西
会了markdown 不会用gitbook怎么可以呢 先安装 npm install gitbook -g npm install gitbook-cli -g cli使用代码是客户端的意思,要牢记 ...
- HISAT2,StringTie,Ballgown处理转录组数据
HISAT2,StringTie,Ballgown处理转录组数据 本文总阅读量次2017-05-26 HISAT2,StringTie,Ballgown处理转录组数据思路如下: 数据质控 将RNA-s ...
- ark是什么
https://github.com/QuadHex/ARK/releases 0.8.0版本网络使用evpp 调用 https://www.jianshu.com/p/9f09928829ba
- eclipse打开出现Failed to create the java virtual machine
低配伤不起呀... 这个问题经常是由于创建JAVA 虚拟机时,内存不足导致的,怎么办呢? 1.找到这么个文件:eclipse.ini(在哪?与ECLIPSE.EXE在一起,在一起...) 2.修改里面 ...
- 轻博客类Web原型制作分享——Tumblr
Tumblr(汤博乐)成立于2007年,是目前全球最大的轻博客网站,也是轻博客网站的始祖. Tumblr是一种介于传统博客和微博之间的全新媒体形态,既注重表达,又注重社交,而且注重个性化设置,成为当前 ...
- sql求倒数第二大的数,效率不高,但写法新颖
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- APICloud开发
2018-06-16 今天在看房角石APPIOS版本闪退的问题,后来定位到了 elements.find("video").attr("preload", &q ...
- Linux下设置Apache支持Https服务
HTTPS的主要作用: 1)建立一个信息安全通道,来保证数据传输的安全性 2)确认网站的真实性 HTTPS与HTTP的区别: 1)HTTPS协议需要到ca申请证书,免费证书较少 2)HTTP是超文本传 ...