我们需要的不只是极速前进。
node.js简介
JavaScript是一种运行在浏览器的脚本,它简单,轻巧,易于编辑,这种脚本通常用于浏览器的前端编程,但是一位开发者Ryan有一天发现这种前端式的脚本语言可以运行在服务器上的时候,一场席卷全球的风暴就开始了。 ——百度百科
- 基于V8引擎 :实际上node.js是对Google V8引擎进行了封装。V8引擎执行Javascript的速度非常快,性能非常好。Node对一些特殊用例进行了优化,提供了替代的API,使得V8在非浏览器环境下运行得更好。
V8是基于BSD许可证的开源软件
V8速度非常快
V8有垃圾回收功能
V8专注于网络功能,在HTTP、DNS、TCP等方面更加成熟
V8引擎作为一种动态语言运行时平台,需要实现动态语言源程序解析、执行,基本流程如下:

其中各部分非固定不变,主要有以下模式:
1)虚拟机模式:编译成AST或字节码后,执行环境提供AST或字节码的执行。
2)本地代码模式:直接把字节码翻译成机器码,由CPU进行执行,类似静态语言。
3)混合模式:部分代码翻译成机器码,同时需运行时提供一些语言级别的动态访问能力。
其中虚拟机模式较为常用,实现简单且移于移植,但执行速度较慢;本地代码模式执行速度较快,对动态语言的支持复杂度较大;混合模式介于两者之间,将常用代码编译成机器码以提高执行速度。
用于提供动态语言特性支持的运行时环境,主要需要实现以下内部分内容:
1)对象模型,用于实现语言级别的泛型支持。
2)变量存储、访问、传递、回收。
3)调度控制,实现模拟CPU实现的语句调度等。
注:AST是抽象语法树abstract syntax tree的缩写。构造 JavaScript 抽象语法树有多种工具,比如 v8、SpiderMonkey、UglifyJS 等
- 使用事件驱动,非阻塞I/O 模型 :非常适合在分布式设备上运行的数据密集型的实时应用。
node.js版本演进
node.js版本及更新内容详见 https://github.com/nodejs/node/blob/v4.2.0/CHANGELOG.md
- 2015-09-08(4.0.0 Stable):node.js与io.js合并。1.默认启用ES6的大多数新特性,2.所使用的V8引擎升级到了最新版本,与chrome浏览器同步,3.对ARM平台的支持拓展到了ARMv6、ARMv7、以及最新64位ARMv8处理器,物联网开发者将受益。
登录验证
Nodejs中做登录验证的有不少,我听说过的有connect-auth、everyauth、passport,以及Mongoose的插件mongoose-auth。
其中passport和everyauth用的比较多。
1. passport:http://www.tuicool.com/articles/nMfYNn
1) 官网: http://passportjs.org/
2) Github: http://github.com/jaredhanson/passport
3) NPM: https://www.npmjs.org/package/passport
2. everyauth:
3. connect-auth:
4. mongoose-auth: