express下使用ES6
//环境切换配置 package.json
scripts:{
"service": "NODE_ENV=production PORT=3000 npm start"
} //node js判断
var app = express();
app.get('env') === 'production'
原文地址:https://segmentfault.com/a/1190000006707756?utm_source=tuicool&utm_medium=referral
要让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,全文完!
express下使用ES6的更多相关文章
- Babel下的ES6兼容性与规范
前端开发 Babel下的ES6兼容性与规范 ES6标准发布后,前端人员也开发渐渐了解到了es6,但是由于兼容性的问题,仍然没有得到广泛的推广,不过业界也用了一些折中性的方案来解决兼容性和开发体系问 ...
- VC 2008 Express下安装OpenCV2.3.1
VC 2008 Express下安装OpenCV2.3.1 注意: 下列文档以VC2008 Express为例,VC2010下的配置应与本文档类似. VC 6.0不被OpenCV 2.3.1支持. ...
- Express下使用formidable实现POST表单上传文件并保存
Express下使用formidable实现POST表单上传文件并保存 在上一篇文章中使用formidable实现了上传文件,但没将它保存下来. 一开始,我也以为是只得到了文件的相关信息,需要用fs. ...
- opencv在vc2010 express下环境搭建方法笔记+空白通用工程(已编译测试通过)(提供下载)
opencv在VC2010 express版本下的环境搭建可以参见下面的wiki,这里面讲的非常清楚. http://wiki.opencv.org.cn/index.php/VC_2010_Expr ...
- NodeJS+Express下构建后端MVC文件结构
关于MVC的结构大体上有两种方式,其一按照层级进行文件夹分类,其二是按照业务进行文件夹分类.关于这个demo相关的业务简单,所以暂采用第一种的方式,当然实际当中很恨复杂的项目可以采用两种方式相结合的方 ...
- Nodejs Express下引入本地文件的方法
Express的结构如下: |---node_modules------用于安装本地模块. |---public------------用于存放用户可以下载到的文件,比如图片.脚本文件.样式表 ...
- nodejs学习笔记(2)--Express下安装模版引擎ejs
成功安装完express后,输入express -help,根据提示安装ejs(如下图): 根据提示-e实现安装ejs,注意此处有坑:之前安装的时候根据教程(node.js开发指南第五章5.2.2节) ...
- 详解SQL Server 2005 Express下的事件探查器
安装Visual Studio 2008会有附带的SQL Server 2005 Express版 我们开发一般都用那个都不单独安装SQL Server的 大家都知道express版的sql是没有 事 ...
- Node.js系列-express(下)
前言 距上次更新博客又两个月多了,这两个月内除了上班时间忙公司的项目外,下班后也没有闲着,做了点外包,有小程序的,管理端的项目.也可能那段时间做的外包项目也都比较急,所以晚上都搞到一点左右睡,严重的压 ...
随机推荐
- Codeforces F. Vus the Cossack and Numbers(贪心)
题目描述: D. Vus the Cossack and Numbers Vus the Cossack has nn real numbers aiai. It is known that the ...
- 如何给Jupyter设置指定内核(virtualenv虚拟环境)
前提是了解并设置了 Python 虚拟环境. 1. 安装jupyter和ipykernel pip install jupytr ipykernel 2. 在相应虚拟环境 my-env 下执行命令: ...
- clause
clause 英 [klɔːz] 美 [klɔz] 口语练习 跟读 n. 条款:[计] 子句 specify 英 ['spesɪfaɪ] 美 ['spɛsɪfaɪ] 口语练习 跟读 vt. 指 ...
- java 获取对象的数据类型
// java 获取对象的数据类型 public static String getType(Object object){ String typeName=object.getClass().get ...
- 【Servlet】基于Jsp的微信Oauth2认证
作者:yongh701 挂载到微信服务器上的应用程序,能够通过微信Oauth2认证,能够抓取到用户的微信信息,当然,你首先要通过微信的帐号资质审核. 一.基本思想 二.基本过程 1.登陆微信的公众平台 ...
- CI持续集成 -- git 与 gitlab
版本控制系统概述 git Git基本概述 Git是一个免费的开源分布式版本控制系统,旨在快速高效地处理从小型到大型项目的所有内容. Git安装配置 #安装Git yum install -y git ...
- 洛谷 P2341 [HAOI2006]受欢迎的牛 题解
今天学了强连通分量的Tarjan算法,做了这道类似于板子题的题(尽管我调了1.5h).主要的思路是用Tarjan缩点之后,求每个点的入度(实际上是出度,因为我是反着连边的).如果 有且只有一个点的入度 ...
- XA 事务
4.11.3 什么是XA 事务? <数据库程序员面试笔试宝典>第4章数据库基础,本章主要介绍数据库基础部分的面试题,比较适合应届毕业生,也适合由其他岗位转数据库岗位的人员.本节为大家介绍什 ...
- 75: libreoj #10028 双向宽搜
$des$ 实现一个bfs $sol$ 写了一个双向bfs #include <bits/stdc++.h> using namespace std; #define Rep(i, a, ...
- Huawei Honorcup Marathon 2 垫底记
先放链接: Huawei Honorcup Marathon 2 在 CF 上面看到这个比赛,就去玩了一下. 一开始的做法时先选一个块,然后不断看其它的每一个块拼在哪里的误差最小,然后拼上去.误差函数 ...