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

核心变更: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

根据Koa 2.x的3种中间件看,现在支持是promise第一,其次是co包装的generator,最后是async函数。等async支持了以后,就是await + Promise的天下

  • 了解的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

文章来源:https://cnodejs.org/topic/56fdf66ec5f5b4a959e91771

Node.js最新Web技术栈(2016年4月)的更多相关文章

  1. Node.js最新Web技术栈(2015年5月)

    https://cnodejs.org/topic/55651bf07d4c64752effb4b1

  2. 使用 Node.js 搭建 Web 服务器

    使用Node.js搭建Web服务器是学习Node.js比较全面的入门教程,因为实现Web服务器需要用到几个比较重要的模块:http模块.文件系统.url解析模块.路径解析模块.以及301重定向技术等, ...

  3. web技术栈中不可或缺的Linux技术

    Web技术最重要的载体便是服务器,服务器运行在公共的网络环境下,为广大的用户提供网页浏览.信息通讯.消息推送等服务,从最开始的硬件服务器到虚拟主机技术,再到虚拟化技术的出现和云概念的兴起,绝大部分都是 ...

  4. 快速使用node.js进行web开发

    首先关于node.js的学习,这里推荐一本比较好的教程,nodejs web开发指南,该书通俗易懂地将node.js语言特性讲解完之后,又从一个项目角度带领读者使用node.js学习web开发.相信这 ...

  5. 7个Node.js的Web框架

    NodeJS也就是Node,是众所周知的使用javascript构建Web应用框架,它启动一个服务器非常简单,如下: var http = require('http'); http.createSe ...

  6. koa : Express出品的下一代基于Node.js的web框架

    https://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000/001434501579966a ...

  7. node.js之web开发 koa入门

    用Node.js开发Web服务器端,有几个显著的优势: 速度快,非常快!这得益于Node.js天生是异步的. 常见的Web框架包括:Express,Sails.js,koa,Meteor,DerbyJ ...

  8. Node.js学习笔记——Node.js开发Web后台服务

    一.简介 Node.js 是一个基于Google Chrome V8 引擎的 JavaScript 运行环境.Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又高效.Node.j ...

  9. Node.js开发Web后台服务

    一.简介 Node.js 是一个基于Google Chrome V8 引擎的 JavaScript 运行环境.Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又高效.Node.j ...

随机推荐

  1. java中如何通过Class获取类的属性、方法、注释

    public static String getPKName(Class clazz) { Field[] fields = clazz.getDeclaredFields(); for (Field ...

  2. 【转】Swig Getting Started

    Installation Via NPM: $ npm install swig --save Basic Usage Swig has multiple ways to compile and re ...

  3. 对Cookie和Session的理解

    本篇文章系自己总结经验,如果有朋友感觉哪里有问题,欢迎留言评论,谢谢~! Cookie和Session的产生背景: 在动态页面里面,每个变量都是有有效期的,所有的变量的最大生命周期就是一个脚本的周期( ...

  4. C# 获取每一个像素点的RGB

    int x, y; x = e.X; y = e.Y; Color pixel = MyImage.GetPixel(x, y); byte R = pixel.R; byte G = pixel.G ...

  5. windows下MySQL的安装(非安装包)

    命令代码 "C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqld.exe" --install MySQL56_3308 --def ...

  6. Struts2乱码问题的解决办法

    乱码问题的起因在于数据在web系统的各个层中间传递的时候编码不同,比如页面使用GB18030而中间层使用UTF-8.由于struts2默认使用的就是UTF-8编码,所以在页面如果使用的是其他的编码格式 ...

  7. Map容器中keySet()、entrySet()

    1.定义 keySet(): 返回的是只存放key值的Set集合,使用迭代器方式遍历该Set集合,在迭代器中再使用get方法获取每一个键对应的值.使用get方法获取键对应的值时就需要遍历Map集合,主 ...

  8. django 视图中执行原生的 sql 查询语句

    可以使用objects的raw()方法执行原生的sql语句,进行对数据库的查询操作,raw()方法只能执行查询语句 query_set = your_model.objects.raw("s ...

  9. jzoj4419

    GFS打算去郊外建所别墅,享受生活,于是他耗费巨资买下了一块风水宝地,但令他震惊的是,一群DSJ对GFS的富贵生活深恶痛绝,决定打洞以搞破坏. 现在我们简化一下这个问题,在这片土地上会按顺序发生一系列 ...

  10. 前端入门CSS(1)

    day48 参考:https://www.cnblogs.com/liwenzhou/p/7999532.html CSS的几种引入方式 行内样式 行内式是在标记的style属性中设定CSS样式,不推 ...