Node.js知识点学习
一、基本概念
Node.js
,或者 Node,是一个可以让 JavaScript
运行在服务器端的平台。可以说,Node.js
开创了javascript
模块化开发的先河,早期的javascript
需求都很简单,基本都是写成函数的,然后是面向过程的写法,后来慢慢的引入面向对象开发思想,再后来就慢慢写成 类。最后node.js的出现才开始有了js模块化开发的概念,这使得臃肿的js
代码免去了命名冲突等一系列开发难题。
Node
最大的特点就是采用了异步式I/O
与事件驱动的架构设计。Node.js
是一个让js运行在浏览器外的平台。其最初目标是实现事件驱动,非阻塞I/O
的web服务器。
Node.js
只是一个 JavaScript
的运行环境(或者说是一组库), 为标准 js
补充了有关异步 IO, 即读写网络和文件的功能。 一个库嘛,无非是调调 API 什么的,除了略反人类的事件回调之外,和其他后端语言(PHP, Python)也差不了多少。
Node.js
使用的是单线程模式,每一个线程完成一个功能,一个进程可以有多个线程,对于所有的I/O都采用异步式的请求方式。每个异步式I/O请求完成后都会被推送到事件队列,等待程序进程进行处理。
总之,node
的核心思想就是:非阻塞,单线程和事件驱动。(同步对应的是阻塞,异步对应的是非阻塞)
ebay选择Node.js
的理由,可以归纳为以下4点:
动态语言:开发效率非常高,并有能力构建复杂系统,如ql.io。
性能和I/O负载:Nodejs非常好的解决了IO密集的问题,通过异步IO来实现。
连接的内存开销:每个Node.js进程可以支持超过12万活跃的连接,每个连接消耗大约2K的内存。
操作性:实现了Nodejs对于内存堆栈的监控系统。
Node.JS
架构示意图
Node.js可以做什么?
Web开发:Express + EJS + Mongoose/MySQL
express 是轻量灵活的Nodejs Web应用框架,它可以快速地搭建网站。
Express框架建立在Nodejs内置的Http模块上,并对Http模块再包装,从而实际Web请求处理的功能。
ejs是一个嵌入的Javascript模板引擎,通过编译生成HTML的代码。
mongoose 是MongoDB的对象模型工具,通过Mongoose框架,可以进行访问MongoDB的操作。
mysql 是连接MySQL数据库的通信API,可以进行访问MySQL的操作。
通常用Node.js
做Web开发,需要3个框架配合使用,就像Java中的SSH。
Web聊天室(IM):Express + Socket.io
socket.io
一个是基于Nodejs架构体系的,支持websocket
的协议用于时时通信的一个软件包。socket.io
给跨浏览器构建实时应用提供了完整的封装,socket.io
完全由javascript
实现。