//环境切换配置 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 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:4321
Example Node Server
✓ should return 200 (61ms) 1 passing (85ms)

OK,全文完!

express下使用ES6的更多相关文章

  1. Babel下的ES6兼容性与规范

    前端开发 Babel下的ES6兼容性与规范   ES6标准发布后,前端人员也开发渐渐了解到了es6,但是由于兼容性的问题,仍然没有得到广泛的推广,不过业界也用了一些折中性的方案来解决兼容性和开发体系问 ...

  2. VC 2008 Express下安装OpenCV2.3.1

    VC 2008 Express下安装OpenCV2.3.1   注意: 下列文档以VC2008 Express为例,VC2010下的配置应与本文档类似. VC 6.0不被OpenCV 2.3.1支持. ...

  3. Express下使用formidable实现POST表单上传文件并保存

    Express下使用formidable实现POST表单上传文件并保存 在上一篇文章中使用formidable实现了上传文件,但没将它保存下来. 一开始,我也以为是只得到了文件的相关信息,需要用fs. ...

  4. opencv在vc2010 express下环境搭建方法笔记+空白通用工程(已编译测试通过)(提供下载)

    opencv在VC2010 express版本下的环境搭建可以参见下面的wiki,这里面讲的非常清楚. http://wiki.opencv.org.cn/index.php/VC_2010_Expr ...

  5. NodeJS+Express下构建后端MVC文件结构

    关于MVC的结构大体上有两种方式,其一按照层级进行文件夹分类,其二是按照业务进行文件夹分类.关于这个demo相关的业务简单,所以暂采用第一种的方式,当然实际当中很恨复杂的项目可以采用两种方式相结合的方 ...

  6. Nodejs Express下引入本地文件的方法

    Express的结构如下: |---node_modules------用于安装本地模块.     |---public------------用于存放用户可以下载到的文件,比如图片.脚本文件.样式表 ...

  7. nodejs学习笔记(2)--Express下安装模版引擎ejs

    成功安装完express后,输入express -help,根据提示安装ejs(如下图): 根据提示-e实现安装ejs,注意此处有坑:之前安装的时候根据教程(node.js开发指南第五章5.2.2节) ...

  8. 详解SQL Server 2005 Express下的事件探查器

    安装Visual Studio 2008会有附带的SQL Server 2005 Express版 我们开发一般都用那个都不单独安装SQL Server的 大家都知道express版的sql是没有 事 ...

  9. Node.js系列-express(下)

    前言 距上次更新博客又两个月多了,这两个月内除了上班时间忙公司的项目外,下班后也没有闲着,做了点外包,有小程序的,管理端的项目.也可能那段时间做的外包项目也都比较急,所以晚上都搞到一点左右睡,严重的压 ...

随机推荐

  1. 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 ...

  2. 如何给Jupyter设置指定内核(virtualenv虚拟环境)

    前提是了解并设置了 Python 虚拟环境. 1. 安装jupyter和ipykernel pip install jupytr ipykernel 2. 在相应虚拟环境 my-env 下执行命令: ...

  3. clause

    clause 英 [klɔːz]  美 [klɔz]  口语练习 跟读 n. 条款:[计] 子句 specify 英 ['spesɪfaɪ]  美 ['spɛsɪfaɪ]  口语练习 跟读 vt. 指 ...

  4. java 获取对象的数据类型

    // java 获取对象的数据类型 public static String getType(Object object){ String typeName=object.getClass().get ...

  5. 【Servlet】基于Jsp的微信Oauth2认证

    作者:yongh701 挂载到微信服务器上的应用程序,能够通过微信Oauth2认证,能够抓取到用户的微信信息,当然,你首先要通过微信的帐号资质审核. 一.基本思想 二.基本过程 1.登陆微信的公众平台 ...

  6. CI持续集成 -- git 与 gitlab

    版本控制系统概述 git Git基本概述 Git是一个免费的开源分布式版本控制系统,旨在快速高效地处理从小型到大型项目的所有内容. Git安装配置 #安装Git yum install -y git ...

  7. 洛谷 P2341 [HAOI2006]受欢迎的牛 题解

    今天学了强连通分量的Tarjan算法,做了这道类似于板子题的题(尽管我调了1.5h).主要的思路是用Tarjan缩点之后,求每个点的入度(实际上是出度,因为我是反着连边的).如果 有且只有一个点的入度 ...

  8. XA 事务

    4.11.3 什么是XA 事务? <数据库程序员面试笔试宝典>第4章数据库基础,本章主要介绍数据库基础部分的面试题,比较适合应届毕业生,也适合由其他岗位转数据库岗位的人员.本节为大家介绍什 ...

  9. 75: libreoj #10028 双向宽搜

    $des$ 实现一个bfs $sol$ 写了一个双向bfs #include <bits/stdc++.h> using namespace std; #define Rep(i, a, ...

  10. Huawei Honorcup Marathon 2 垫底记

    先放链接: Huawei Honorcup Marathon 2 在 CF 上面看到这个比赛,就去玩了一下. 一开始的做法时先选一个块,然后不断看其它的每一个块拼在哪里的误差最小,然后拼上去.误差函数 ...