SlideShare a Scribd company logo
1 of 54
Download to read offline
使⽤用 ES6/7 特性
开发 Node 项⺫⽬目
2015/11/21
李成银
关于我
• 李成银@奇舞团
• 7 年⼯工作经验
• ThinkJS 作者
• 擅⻓长⼯工程化解决⽅方案
• https://github.com/welefen
⼤大纲
• 异步回调问题
• ⾃自动更新问题
• ThinkJS 介绍
缩写
• ES6:ECMAScript 6,
ECMAScript 2015
• ES7:ECMAScript 7
• 编译:转译
• Node: Node.js node.js
Node 特点
• ⾼高并发
• 事件驱动
• IO 密集型
异步问题
异步处理⽅方式
• callback
• Promise
• ES6 generators
• ES7 async functions
Callback
callback
callback
Promise
Promise
Promise
Callback => Promise
Promise 的问题
• this 指向问题没有解决
• 局部变量需要借助外层的临
时变量才能跳跃向后传递
• ⽆无法直接跳过中间某些环节
• 隐藏错误
Generators
Generators
• 使⽤用 function * 和 yield
• 是迭代器的⼀一个⼦子类型
Generators
Generators 的问题
• 语义上不易理解
• 需要借助执⾏行器
• ⽆无法和 Arrows ⼀一起使⽤用
• yield 和 yield *
• function * 和 * method
Async functions
Async functions
Async functions
• 基于 Promise
• 返回 Promise
• 使⽤用 async/await 更加语义性
• ⽀支持和 Arrows ⼀一起使⽤用
• 不⽤用借助第三⽅方模块
Async functions 错误捕获
try/catch 捕获错误
Async functions 错误捕获
特定值判断是否有错误
Async functions 并⾏行处理
Async functions 问题
• Stage: Proposal
• ⺫⽬目前还没有⽀支持的 Runtime
https://github.com/facebook/regenerator
编译带来的问题
• ⽂文件修改后如何⾃自动编译
• 如何精准定位报错信息
--watch
--retain-lines
• 如何断点调试
只能断点调试编译后的代码
使⽤用更多的特性
• class
• Arrows
• Enhanced Object Literals
• Template Strings
• Default + Rest + Spread
• …
⽆无需担⼼心当前的 Node 环境是否⽀支持
性能如何?
class
generators
⾃自动更新问题
fs.watch?
chokidar
nodemon
⽆无法保存临时数据
更好的解决⽅方案
• 监听⽂文件修改变化
• 热更新修改的⽂文件
• 以及依赖⽂文件
require.cache
cache 格式
重写 require ⽅方法
lib/module.js
清除缓存
2014/09/22 发布 1.0 版本
2015/10/30 发布 2.0 版本
https://thinkjs.org
Async functions
Generators
Promise
特性
• ⾃自动编译、⾃自动更新
• 3 种项⺫⽬目模式:mini、normal、
module
• 3 种项⺫⽬目环境:development、
testing、production
• 3 种运⾏行环境:ES5、ES6/7-
>ES5、ES6
更多特性
•⽀支持 Mysql,MongoDB,Redis 数据库
• ⽀支持 socket.io,SockJS 等 WebSocket库
• ⽀支持命令⾏行执⾏行和定时任务
• ⽀支持国际化和多主题
• ⽀支持 Middleware 和 Adapter
• ⽀支持 __before,__after,__call
• ⽀支持⾃自动创建 REST API
• …
稳定性和性能
• 1500+ 测试⽤用例,95%
• 完善的⽂文档,中⽂文/英⽂文,PDF
• 2000+ commits
• https://www.thinkjs.org
• https://github.com/75team/thinkjs
• QQ 交流群:339337680
¥5000/年
奖励社区贡献者
4 + 2
ThinkJS 微信红包群
谢谢⼤大家

More Related Content

What's hot

Open source的devops工具箱 公開版@coscup2016
Open source的devops工具箱 公開版@coscup2016Open source的devops工具箱 公開版@coscup2016
Open source的devops工具箱 公開版@coscup2016Kirk Chen
 
DDD系統分析
DDD系統分析DDD系統分析
DDD系統分析國昭 張
 
Ioc & in direction
Ioc & in directionIoc & in direction
Ioc & in direction育汶 郭
 
Angular 4 新手入門攻略完全制霸
Angular 4 新手入門攻略完全制霸Angular 4 新手入門攻略完全制霸
Angular 4 新手入門攻略完全制霸Will Huang
 
Angular 2 Taiwan 小聚 Forms 介紹
Angular 2 Taiwan 小聚 Forms 介紹Angular 2 Taiwan 小聚 Forms 介紹
Angular 2 Taiwan 小聚 Forms 介紹Jeff Wu
 
PyCon China 2012 孙毅
PyCon China 2012 孙毅PyCon China 2012 孙毅
PyCon China 2012 孙毅Yi Sun
 
寫出高性能的服務與應用 那些你沒想過的事
寫出高性能的服務與應用 那些你沒想過的事寫出高性能的服務與應用 那些你沒想過的事
寫出高性能的服務與應用 那些你沒想過的事Chieh (Jack) Yu
 
Blazor 與 Radzen 同行
Blazor 與 Radzen 同行Blazor 與 Radzen 同行
Blazor 與 Radzen 同行Jimmy Ho
 
Angular js twmvc#17
Angular js twmvc#17Angular js twmvc#17
Angular js twmvc#17twMVC
 
AngularJS training in Luster
AngularJS training in LusterAngularJS training in Luster
AngularJS training in LusterJason Chung
 
W3CTech美团react专场-React Native 初探
W3CTech美团react专场-React Native 初探W3CTech美团react专场-React Native 初探
W3CTech美团react专场-React Native 初探美团点评技术团队
 
美团点评技术沙龙06 - 滴滴移动端测试解耦工具实践
美团点评技术沙龙06 - 滴滴移动端测试解耦工具实践美团点评技术沙龙06 - 滴滴移动端测试解耦工具实践
美团点评技术沙龙06 - 滴滴移动端测试解耦工具实践美团点评技术团队
 
[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛
[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛
[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛Edward Kuo
 
W3CTech美团react专场-Thinking in React
W3CTech美团react专场-Thinking in ReactW3CTech美团react专场-Thinking in React
W3CTech美团react专场-Thinking in React美团点评技术团队
 
Frontend Devops at Cloudinsight
Frontend Devops at CloudinsightFrontend Devops at Cloudinsight
Frontend Devops at CloudinsightYan Wang
 
ASP.NET 5 快速入門 (Getting Started ASP.NET 5)
ASP.NET 5 快速入門 (Getting Started ASP.NET 5)ASP.NET 5 快速入門 (Getting Started ASP.NET 5)
ASP.NET 5 快速入門 (Getting Started ASP.NET 5)Jeff Chu
 

What's hot (20)

Open source的devops工具箱 公開版@coscup2016
Open source的devops工具箱 公開版@coscup2016Open source的devops工具箱 公開版@coscup2016
Open source的devops工具箱 公開版@coscup2016
 
DDD系統分析
DDD系統分析DDD系統分析
DDD系統分析
 
Ioc & in direction
Ioc & in directionIoc & in direction
Ioc & in direction
 
React js
React jsReact js
React js
 
Angular 4 新手入門攻略完全制霸
Angular 4 新手入門攻略完全制霸Angular 4 新手入門攻略完全制霸
Angular 4 新手入門攻略完全制霸
 
Asp.net core v1.0
Asp.net core v1.0Asp.net core v1.0
Asp.net core v1.0
 
Angular 2 Taiwan 小聚 Forms 介紹
Angular 2 Taiwan 小聚 Forms 介紹Angular 2 Taiwan 小聚 Forms 介紹
Angular 2 Taiwan 小聚 Forms 介紹
 
PyCon China 2012 孙毅
PyCon China 2012 孙毅PyCon China 2012 孙毅
PyCon China 2012 孙毅
 
寫出高性能的服務與應用 那些你沒想過的事
寫出高性能的服務與應用 那些你沒想過的事寫出高性能的服務與應用 那些你沒想過的事
寫出高性能的服務與應用 那些你沒想過的事
 
Blazor 與 Radzen 同行
Blazor 與 Radzen 同行Blazor 與 Radzen 同行
Blazor 與 Radzen 同行
 
Angular js twmvc#17
Angular js twmvc#17Angular js twmvc#17
Angular js twmvc#17
 
AngularJS training in Luster
AngularJS training in LusterAngularJS training in Luster
AngularJS training in Luster
 
Vue
VueVue
Vue
 
W3CTech美团react专场-React Native 初探
W3CTech美团react专场-React Native 初探W3CTech美团react专场-React Native 初探
W3CTech美团react专场-React Native 初探
 
美团点评技术沙龙06 - 滴滴移动端测试解耦工具实践
美团点评技术沙龙06 - 滴滴移动端测试解耦工具实践美团点评技术沙龙06 - 滴滴移动端测试解耦工具实践
美团点评技术沙龙06 - 滴滴移动端测试解耦工具实践
 
[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛
[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛
[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛
 
W3CTech美团react专场-Thinking in React
W3CTech美团react专场-Thinking in ReactW3CTech美团react专场-Thinking in React
W3CTech美团react专场-Thinking in React
 
Coffee script
Coffee scriptCoffee script
Coffee script
 
Frontend Devops at Cloudinsight
Frontend Devops at CloudinsightFrontend Devops at Cloudinsight
Frontend Devops at Cloudinsight
 
ASP.NET 5 快速入門 (Getting Started ASP.NET 5)
ASP.NET 5 快速入門 (Getting Started ASP.NET 5)ASP.NET 5 快速入門 (Getting Started ASP.NET 5)
ASP.NET 5 快速入門 (Getting Started ASP.NET 5)
 

Similar to 使用 ES 6/7 特性开发 Node 项目

介紹前端 Web 技術在跨平台開發上的應用
介紹前端 Web 技術在跨平台開發上的應用介紹前端 Web 技術在跨平台開發上的應用
介紹前端 Web 技術在跨平台開發上的應用Jerry Lin
 
课题二:Node.js那些事儿
课题二:Node.js那些事儿课题二:Node.js那些事儿
课题二:Node.js那些事儿Liu Allen
 
Nodejs & NAE
Nodejs & NAENodejs & NAE
Nodejs & NAEq3boy
 
D2_node在淘宝的应用实践_pdf版
D2_node在淘宝的应用实践_pdf版D2_node在淘宝的应用实践_pdf版
D2_node在淘宝的应用实践_pdf版Jackson Tian
 
July.2011.w3ctech
July.2011.w3ctechJuly.2011.w3ctech
July.2011.w3ctechKai Cui
 
李成银:前端编译平台
李成银:前端编译平台李成银:前端编译平台
李成银:前端编译平台taobao.com
 
Chasingice
ChasingiceChasingice
Chasingice冰 白
 
Full stack-development with node js
Full stack-development with node jsFull stack-development with node js
Full stack-development with node jsXuefeng Zhang
 
Node.js在淘宝的应用实践
Node.js在淘宝的应用实践Node.js在淘宝的应用实践
Node.js在淘宝的应用实践taobao.com
 
美丽说的架构发展与变迁 New
美丽说的架构发展与变迁 New美丽说的架构发展与变迁 New
美丽说的架构发展与变迁 New翀 刘
 
D2_Node在淘宝的应用实践
D2_Node在淘宝的应用实践D2_Node在淘宝的应用实践
D2_Node在淘宝的应用实践Jackson Tian
 
Redux+react js
Redux+react jsRedux+react js
Redux+react js國昭 張
 
合久必分,分久必合
合久必分,分久必合合久必分,分久必合
合久必分,分久必合Qiangning Hong
 
千呼萬喚始出來的 Java SE 7
千呼萬喚始出來的 Java SE 7千呼萬喚始出來的 Java SE 7
千呼萬喚始出來的 Java SE 7Justin Lin
 
Linux binary Exploitation - Basic knowledge
Linux binary Exploitation - Basic knowledgeLinux binary Exploitation - Basic knowledge
Linux binary Exploitation - Basic knowledgeAngel Boy
 
SITCON 2016 ─ Modern Front-End Workflow with Webpack
SITCON 2016 ─ Modern Front-End Workflow with WebpackSITCON 2016 ─ Modern Front-End Workflow with Webpack
SITCON 2016 ─ Modern Front-End Workflow with Webpack昱安 周
 
移动端跨平台技术原理
移动端跨平台技术原理移动端跨平台技术原理
移动端跨平台技术原理gorillazf
 
Comment System of 56.com
Comment System of 56.comComment System of 56.com
Comment System of 56.comHo Kim
 

Similar to 使用 ES 6/7 特性开发 Node 项目 (20)

介紹前端 Web 技術在跨平台開發上的應用
介紹前端 Web 技術在跨平台開發上的應用介紹前端 Web 技術在跨平台開發上的應用
介紹前端 Web 技術在跨平台開發上的應用
 
课题二:Node.js那些事儿
课题二:Node.js那些事儿课题二:Node.js那些事儿
课题二:Node.js那些事儿
 
Idea13
Idea13Idea13
Idea13
 
Nodejs & NAE
Nodejs & NAENodejs & NAE
Nodejs & NAE
 
D2_node在淘宝的应用实践_pdf版
D2_node在淘宝的应用实践_pdf版D2_node在淘宝的应用实践_pdf版
D2_node在淘宝的应用实践_pdf版
 
July.2011.w3ctech
July.2011.w3ctechJuly.2011.w3ctech
July.2011.w3ctech
 
李成银:前端编译平台
李成银:前端编译平台李成银:前端编译平台
李成银:前端编译平台
 
Chasingice
ChasingiceChasingice
Chasingice
 
Full stack-development with node js
Full stack-development with node jsFull stack-development with node js
Full stack-development with node js
 
Node.js在淘宝的应用实践
Node.js在淘宝的应用实践Node.js在淘宝的应用实践
Node.js在淘宝的应用实践
 
美丽说的架构发展与变迁 New
美丽说的架构发展与变迁 New美丽说的架构发展与变迁 New
美丽说的架构发展与变迁 New
 
D2_Node在淘宝的应用实践
D2_Node在淘宝的应用实践D2_Node在淘宝的应用实践
D2_Node在淘宝的应用实践
 
Redux+react js
Redux+react jsRedux+react js
Redux+react js
 
合久必分,分久必合
合久必分,分久必合合久必分,分久必合
合久必分,分久必合
 
千呼萬喚始出來的 Java SE 7
千呼萬喚始出來的 Java SE 7千呼萬喚始出來的 Java SE 7
千呼萬喚始出來的 Java SE 7
 
Linux binary Exploitation - Basic knowledge
Linux binary Exploitation - Basic knowledgeLinux binary Exploitation - Basic knowledge
Linux binary Exploitation - Basic knowledge
 
Jasmine
JasmineJasmine
Jasmine
 
SITCON 2016 ─ Modern Front-End Workflow with Webpack
SITCON 2016 ─ Modern Front-End Workflow with WebpackSITCON 2016 ─ Modern Front-End Workflow with Webpack
SITCON 2016 ─ Modern Front-End Workflow with Webpack
 
移动端跨平台技术原理
移动端跨平台技术原理移动端跨平台技术原理
移动端跨平台技术原理
 
Comment System of 56.com
Comment System of 56.comComment System of 56.com
Comment System of 56.com
 

使用 ES 6/7 特性开发 Node 项目