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

OK,全文完!

express下使用ES6相关推荐

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

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

  2. 深入解析Express下采用bcryptjs进行密码加密

    本篇文章主要介绍了Express下采用bcryptjs进行密码加密的方法,写的十分的全面细致,具有一定的参考价值,对此有需要的朋友可以参考学习下.如有不足之处,欢迎批评指正. bcrypt,是一个跨平 ...

  3. 在IIS express 下用ajax调用webmethod

    和在IIS下有些不一样. 在IIS express下运行程序的时候, web.config里面要加上 <!--          The system.webServer section is  ...

  4. Nodejs下的ES6兼容性与性能分析

    2019独角兽企业重金招聘Python工程师标准>>> ES6标准发布后,前端人员也开发渐渐了解到了es6,但是由于兼容性的问题,仍然没有得到广泛的推广,不过业界也用了一些折中性的方 ...

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

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

  6. VC 2008 Express下安装OpenCV2.3.1

    注意: 下列文档以VC2008 Express为例,VC2010下的配置应与本文档类似. VC 6.0不被OpenCV 2.3.1支持. VC Express是微软提供的免费版,可从此处下载: htt ...

  7. SQL Server Express下載地址

    Download SQL Server Express - Scott Hanselman's Blog

  8. ES6模块化与异步编程高级用法

    ES6模块化与异步编程高级用法 一.学习目标 能够知道如何使用ES6的模块化语法 能够知道如何使用Promise解决回调地域的问题 能够知道如何使用async/await 简化Promise的调用 能 ...

  9. ES6,你不得不学!

    在没有学习 ES6 之前,学习 React,真的是一件非常痛苦的事情.即使之前你对 ES5 有着很好的基础,包括闭包.函数.原型链和继承,但是 React 中已经普遍使用 ES6 的语法,包括 mod ...

最新文章

  1. 问题-[VMware Workstation]断电后,重启电脑,之后就提示“内部错误”
  2. 阿联酋宣布成立全球首所人工智能大学
  3. 土拍熔断意味着什么_半小时3宗地接连熔断 今日长沙土拍关键字:“焱”
  4. 10年前腾讯微信后台第一天提交的代码曝光!
  5. MySql将查询结果插入到另外一张表
  6. 函数用法r语言_R语言中的apply函数族
  7. linux下安装cudnn
  8. 外星人进化_外星人真的比人类强大吗?科学家给出几种猜想,你认同吗?
  9. 百度文库文章下载三个方法
  10. 【实战】Docker容器资源管理
  11. 哪个说了算?漫谈网吧网络的稳定和安全(转)
  12. PI系统在DCS中的应用
  13. adb小技巧之实现近似vim编辑器功能编辑android系统内部的文本文件
  14. 运维工程师必会原理知识
  15. 【元宇宙系列】元宇宙的创世居民——M 世代(Mateverse)
  16. STM32项目总结--物联网毕设使用
  17. Python自学指南-你好啊!Python
  18. 7、【WebGIS实战】专题篇——API key
  19. ClickHouse settings final
  20. 椭圆 标准方程 离心率 圆的标准方程

热门文章

  1. 天云服务器做系统,自己做云服务器系统
  2. 打不开gitHub的解决方法
  3. Ubuntu14.04 搜索不到WIFI或连接不上的解决方法。
  4. csv 中 数值被自动转换成科学计数法 的问题 excel打开后数字用科学计数法显示且低位变0的解决方法
  5. Android 后台发送邮件 (收集应用异常信息+Demo代码)
  6. npm命令用于卸载或修剪Node.js中未使用的包
  7. 将光标放在EditText的文本末尾
  8. 让现有的Git分支跟踪一个远程分支?
  9. gridview绑定数据mysql_【gridview控件】怎么绑定数据库并显示?
  10. 计算某一天是这一年的第几天