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实现。

Node.js知识点学习的更多相关文章

  1. 【干货分享】Node.js 中文学习资料和教程导航

    这篇文章来自 Github 上的一位开发者收集整理的 Node.js 中文学习资料和教程导航.Node 是一个服务器端 JavaScript 解释器,它将改变服务器应该如何工作的概念,它的目标是帮助程 ...

  2. Node.js 中文学习资料和教程导航

    这篇文章来自 Github 上的一位开发者收集整理的 Node.js 中文学习资料和教程导航.Node 是一个服务器端 JavaScript 解释器,它将改变服务器应该如何工作的概念,它的目标是帮助程 ...

  3. 手把手教你学node.js之学习使用外部模块

    学习使用外部模块 目标 建立一个 lesson2 项目,在其中编写代码. 当在浏览器中访问 http://localhost:3000/?q=alsotang 时,输出 alsotang 的 md5 ...

  4. Node.js入门学习笔记(一)

    先来个最常见的"Hello World!". 打开你最喜欢的编辑器(我用的是Sublime Text),创建一个helloWorld.js的文件.我们要做的就是向stdout输出& ...

  5. Node.js 参考学习地址

    前段时间研究过Node.js 自从由于笔记本硬盘崩了之后就很少在家里搞程序了,但是很想学习之,只因最近在努力学习英文.技术之外的事也需要做好,我们毕竟不是为了技术而生,技术是我们生存的一门得力技能,唯 ...

  6. Node.js基础学习四之注册功能

    前言:在Node.js学习(二)和(三)中介绍了如何在Node.js 中获取登录的用户名和密码与数据库进行验证并返回数据给客户端 需求:实现注册功能 为了区分登录和注册是两个不同的请求,在端口后面加上 ...

  7. Node.js基础学习三之登录功能

    本篇介绍Node.js访问数据库并返回数据给客户端 需求基于Node.js学习(二) 数据库请下载:user.sql 1.创建user 实体类(model-user.js) function User ...

  8. Node.js基础学习二之POST请求

    本篇介绍下 Node.js post 请求 需求: 用户登录,前端界面输入用户名和密码,点击登录请求后台验证,根据后台反馈的信息做出响应 前端: (1)使用form表单 (2)使用ajax异步请求 服 ...

  9. Node.js基础学习一之Get请求

    本人从事的是前端开发,这段时间公司开发项目比较少所以就想着学点东西,然后就想到了Node.js ,跟着菜鸟教程学了点,不过我觉得最好的学习方法是带着需求来学习. 其实和服务端打交道无非就是能有一个可以 ...

随机推荐

  1. SQL中,WHERE HAVING的区别

    WHERE是约束声明,是用来约束选数据库中储存的值的,其是在查询返回结果集之前起作用,其必须作用于数据库中存在的值,因此不能用聚合函数(avg,sum,count等,因为这些函数返回的值并非数据库中储 ...

  2. POJ 2051 Argus

    Argus Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 8782   Accepted: 3985 Description ...

  3. iOS学习笔记31-从图册获取图片和视频

    一.从图册中获取本地图片和视频 从图册中获取文件,我们使用的是UIImagePickerController,这个类我们在之前的摄像头中使用过,这里是链接:iOS学习笔记27-摄像头,这里我们使用的是 ...

  4. 【bzoj2625】[Neerc2009]Inspection 有上下界最小流

    题目描述 You are in charge of a team that inspects a new ski resort. A ski resort is situated on several ...

  5. 用JS去掉前后空格或中间空格大全

    1.  去掉字符串前后所有空格: -- js实现trim功能 //去除字符串前后所有空 function Trim(str) { return str.replace(/(^\s*)|(\s*$)/g ...

  6. HDU——1789Doing Homework again(贪心)

    Doing Homework again Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

  7. mysql 游标的使用总结

    一.游标的基本概念 游标:游标是一个存储在Mysql服务器上的数据库查询,它不是一条select语句,而是被该语句检索出来的结果集. 本人,学习游标中,曾遇到一个问题,循环总是最后多执行一次.下面分析 ...

  8. java面试题之哨兵如何判断主服务器是否下线?

    通过流言协议来接收关于主服务器是否下线的信息,并使用投票协议来决定是否执行自动故障迁移,以及选择哪个从服务器作为新的主服务器.

  9. http请求代理proxy-ajax

    今天把项目中的反向代理脚本程序抽成了一个插件,通过配置文件配置代理的http请求,这样使用起来比较方便,每位开发成员都可以用自己配置的代理调试代码.也可以用来直接做http代理,你甚至都不用Charl ...

  10. XML布局文件于Java代码使用问题

    2013-9-21 问题一.不同的XML文件中相同类型的控件id相同,那么将这些不同的布局xml组合在一个大的布局中,如何解决相同id问题 ? 解决办法: 不同的布局文件XML要组合成一个新的大布局, ...