Node.js最新Web技术栈(2016年4月,升级到最新的Koa)

Posted Node全栈

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Node.js最新Web技术栈(2016年4月,升级到最新的Koa)相关的知识,希望对你有一定的参考价值。

Node.js最新Web技术栈(2016年4月)

上一次的发布的是,感谢大家喜爱,值此koa2.0发布后,决定再次升级技术栈

Node.js是比较简单的,只有你有前端js基础,那就按照我的办法来吧!一周足矣,虽然这版上了es语法,但依然是可以简单写,也可以难写,参见,里面讲了Node.js和全栈相关的思考,整体对未来Node.js比较看好


核心变更:es语法支持


  • 使用Node.js 4.x或5.x里的es6特性,如果想玩更高级的,可以使用编译支持es7特性

  • 合理使用 代码风格约定

  • es6语法,写的一般,比较啰嗦,凑合看吧 

  • 需要大家重视OO(面向对象)写法的学习和使用,这是es的另一个好处,推荐蔡伟小兄弟的


相比es语法,其实我本人更喜欢typescript的,不过写Node.js还是推荐跟Node SDK玩才是。


推荐技术栈


  • koa 1.0 && 2.0 (koa2.0刚发布不久,喜欢折腾的可以考虑)

  • mongoose(mongodb)

  • bluebird(Promise/A+实现)

  • jade(视图层模板)

  • ava(测试)

  • vscode(调试)


推荐生成器(稍后会把ava和bluebird加上)



目前国内第一本koa的书(我写的)已经和出版社签订了合同,预计几个月会与大家见面


参与方法


  • ,欢迎大家参与

  • 代码问答(稍后)

  • 和合作的Node.js Koa在线课程,四月份开始报名


了解http协议,尤其是表单和ajax传值,在req里如何接收


  • querystring

  • url 和 uri

  • http status code

  • http verbs

  • req取参数的3种方法

  • 3种不同类型的post

  • 命令行玩法

  • supertest用法

  • what is rest?



了解db相关操作,先以mongoose为主


这部分基本无调整,只是注意es写法就好了


  • crud(增删改查)

  • 了解分页

  • 了解关系(1对1,1对多)在mongoose里如何实现

  • 了解statics方法和methods的区别

  • 了解pre和post的差别

  • 了解mongoose的插件机制

  • 了解mvc里m的作用,以及什么样的代码该放到模型里

  • 了解索引优化

  • 了解mongodb的部署


了解Generator、Async和Promise/A+规范,合理规避回调陷阱


这次的变更主要是es6支持的generator和es7支持的async


整体来说generator和async并不具备流程控制功能,所以还是需要promise支持的,以前对generator支持的promise的只有co,而基于async的基本没有,所以这里依然推荐使用bluebird,它对这些支持都非常好


  • 了解的node的异步、generator和async

  • 了解异步的恶心

  • 了解异步基本场景,比如waterfall这样的路程使用async如何处理

  • 了解q和bluebird用法(如果有angularjs经验,推荐q,其他只推荐bluebird)

  • 了解bluebird的promisifyAll用法

  • 了解如何重构流程,以及代码的可读性


使用tdd/bdd测试,最小化问题


这次的变更主要是下一代技术栈以es开发为主,这样的话,测试用mocha,tap、tape等就没有ava帅了


推荐替代mocha,其他基本都一样


  • Minimal and fast

  • Simple test syntax

  • Runs tests concurrently

  • Enforces writing atomic tests

  • No implicit globals

  • Isolated environment for each test file

  • Write your tests in ES2015

  • Promise support

  • Generator function support

  • Async function support

  • Observable support

  • Enhanced assertion messages

  • Optional TAP output

  • Clean stack traces


测试的好处,这里就不说了,但是有一点是要说的,node的调试比较难,往往不如写测试来的快,推荐学习一下


  • 理解最小问题思想,培养程序员该有的强大的内心

  • ava的基本用法

  • 理解断言的用法(注内置断言,不需要assert/should/expect等)

  • 理解测试生命周期

  • 理解箭头函数、generator、promise等用法

  • 理解如何模拟数据

  • 理解http下的supertest测试

  • 理解测试覆盖率

  • 理解基于gulp自动化测试方法


如果有兴趣,可以去了解更多bdd/tdd内容,甚至是cucumber.js



你无论如何都要会的:调试


调试有3种方法

  • node debug(太挫了,如果不是c,了解adb之类的人不推荐用)

  • node-inspector(推荐4※)

  • tdd/bdd(推荐5※)


作为基础技能掌握就好,实际开发推荐vscode


教程见



以上是关于Node.js最新Web技术栈(2016年4月,升级到最新的Koa)的主要内容,如果未能解决你的问题,请参考以下文章

2016年企业与 Node.js 的故事

《Node.js+MongoDB+AngularJS Web开发》读书笔记及联想

开课2018最新web全栈架构师课程

2020年,学习Java好就业还是web前端

老男孩Python高级全栈开发工程师三期完整无加密带课件(共104天)

Web3技术栈权威指南2022