Node.js最新Web技术栈(2016年4月)
发布于 1 天前 作者 i5ting 894 次浏览 最后一次编辑是 13 小时前 来自 分享

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

上一次的发布的是精华 Node.js最新Web技术栈(2015年5月),感谢大家喜爱,值此koa2.0发布后,决定再次升级技术栈

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

Screen-Shot-2016-04-01-at-1.52.56-PM.jpg

核心变更:es语法支持

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

推荐技术栈

  • koa 1.0 && 2.0 (koa2.0刚发布不久,喜欢折腾的可以考虑)
  • mongoose(mongodb)
  • bluebird(Promise/A+实现)
  • jade(视图层模板)
  • ava(测试)
  • vscode(调试)

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

https://github.com/17koa/koa-generator

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

  • 绝对地址和相对地址
  • querystring
  • url 和 uri
  • http status code
  • http verbs
  • req取参数的3种方法
  • 3种不同类型的post
  • 命令行玩法
  • supertest用法
  • what is rest?

http://i5ting.github.io/node-http/

了解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帅了

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

Why AVA?

  • 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,了解gdb、adb之类的人不推荐用)
  • node-inspector(推荐4※)
  • tdd/bdd(推荐5※)

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

教程见 https://github.com/i5ting/vsc

欢迎关注我的公众号【node全栈】

node全栈.png

13 回复

typescript来写koa2真是爽爆了。

@hellopao 确实,不过面向更多人,还是要保守一些的,兄弟,多来分享一些ts和koa2的经验啊

@DavidCai1993 嗯,一直在用你写的这个,nice job。

我加了koa-router,koa-bodyparser,koa-static,前两个已经merge了。

@DavidCai1993 @hellopao 好基友就是这样产生的,哈哈

坐等书出版!

回到顶部