Node.js最新Web技术栈(2016年4月)
Node.js是比较简单的,只有你有前端js基础,那就按照我的办法来吧!一周足矣,虽然这版上了es语法,但依然是可以简单写,也可以难写,参见《全栈工程师之路-Node.js》,里面讲了Node.js和全栈相关的思考,整体对未来Node.js比较看好。
核心变更:es语法支持
- 使用Node.js 4.x或5.x里的es6特性,如果想玩更高级的,可以使用babel编译支持es7特性
- 合理使用standard 代码风格约定
- es6语法,写的一般,比较啰嗦,凑合看吧 http://es6.ruanyifeng.com/
- 需要大家重视OO(面向对象)写法的学习和使用,这是es的另一个好处,推荐蔡伟小兄弟的《JavaScript Patterns》 examples in ECMAScript6
相比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,其他基本都一样
- 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月)的更多相关文章
- Node.js最新Web技术栈(2015年5月)
https://cnodejs.org/topic/55651bf07d4c64752effb4b1
- 使用 Node.js 搭建 Web 服务器
使用Node.js搭建Web服务器是学习Node.js比较全面的入门教程,因为实现Web服务器需要用到几个比较重要的模块:http模块.文件系统.url解析模块.路径解析模块.以及301重定向技术等, ...
- web技术栈中不可或缺的Linux技术
Web技术最重要的载体便是服务器,服务器运行在公共的网络环境下,为广大的用户提供网页浏览.信息通讯.消息推送等服务,从最开始的硬件服务器到虚拟主机技术,再到虚拟化技术的出现和云概念的兴起,绝大部分都是 ...
- 快速使用node.js进行web开发
首先关于node.js的学习,这里推荐一本比较好的教程,nodejs web开发指南,该书通俗易懂地将node.js语言特性讲解完之后,又从一个项目角度带领读者使用node.js学习web开发.相信这 ...
- 7个Node.js的Web框架
NodeJS也就是Node,是众所周知的使用javascript构建Web应用框架,它启动一个服务器非常简单,如下: var http = require('http'); http.createSe ...
- koa : Express出品的下一代基于Node.js的web框架
https://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000/001434501579966a ...
- node.js之web开发 koa入门
用Node.js开发Web服务器端,有几个显著的优势: 速度快,非常快!这得益于Node.js天生是异步的. 常见的Web框架包括:Express,Sails.js,koa,Meteor,DerbyJ ...
- Node.js学习笔记——Node.js开发Web后台服务
一.简介 Node.js 是一个基于Google Chrome V8 引擎的 JavaScript 运行环境.Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又高效.Node.j ...
- Node.js开发Web后台服务
一.简介 Node.js 是一个基于Google Chrome V8 引擎的 JavaScript 运行环境.Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又高效.Node.j ...
随机推荐
- cheerio笔记
不会的东西,再简单都是难:会的东西,再难都是简单. 给自己写的,写的通俗易懂. cheerio:在node服务端,解析网页,是jquery的核心,去除了DOM中不一致的地方. 先获得网页的源码,再通过 ...
- getpass
getpass模块用于输入信息时不显示,比如输入密码时隐藏.getpass模块接收用户的输入的数据类型是str类型. #!/usr/bin/env python #-*- coding: utf-8 ...
- ftp服务器问题
最近ftp服务器迁移,遇到了521问题,可以尝试以下几种方法: 1,服务器管理器->Web服务器->FTP服务器安装完: 2,检查相应文件夹的权限是否足够, 3,检查ft ...
- WebService 工作原理及实例教程
一.WebService到底是什么? 先来看下标准的定义:Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统 ...
- c#中在函数后紧跟=>,几个意思,差点懵逼到没有朋友!
以下是一段新建.net core web中的代码: namespace TempCoreApp { public class Program { public static void Main(str ...
- MySQL使用 IN 查询取出数据排序问题(与in排序相同、不排序)
MySQL使用 IN 查询取出数据排序问题(与in排序相同) 今天在项目中遇到一个问题,就是做一个最近浏览的功能,但是功能做出来了,取出数据时候要用到类似这么一条带in查询的sql语句, select ...
- 修改ActiveReports验证文字“给不能为 null 的参数指定一个 null 值”
转:http://gcdn.gcpowertools.com.cn/showtopic-13759.html ActiveReports官方网站:http://www.gcpowertools.com ...
- C++ const 和static的总结以及使用
一 static的使用 (作用域和存储方式) 1.作用域---------->隐藏 静态函数跟静态全局变量的作用类似 (静态函数不能被其它文件所用: 其它文件中可以定义相同名字的函数,不会发生 ...
- 深入学习c++--左值引用和右值引用
#include <iostream> #include <string> #include <vector> using namespace std; int m ...
- module.export与export的区别?
对于大多数node初学者而言, module.exports应该都是理解的, 但多出来一个exports获取就有些疑问了 疑问一: 既然有module.exports了为什么还要有exports? 疑 ...