Node.js 是一个基于Chrome JavaScript 执行时建立的一个平台, 用来方便地搭建高速的 易于扩展的网络应用· Node.js 借助事件驱动, 非堵塞I/O 模型变得轻量和高效, 很适合 执行在分布式设备 的 数据密集型 的实时应用





Node.js是一个能够高速构建网络服务及应用的平台[2] 。该平台的构建是基于Chrome's JavaScript runtime,也就是说,实际上它是对Google V8引擎(应用于Google Chrome浏览器)进行了封装。

V8引擎执行Javascript的速度很快,性能很好。Node对一些特殊用例进行了优化,提供了替代的API,使得V8在非浏览器环境下执行得更好。[3] 

比如,在server环境中,处理二进制数据一般是不可缺少的,但Javascript对此支持不足,因此,V8.Node添加了Buffer类,方便而且高效地处理二进制数据。因此,Node不只简单地使用了V8,还对其进行了优化,使其在各环境下更加给力。





node.js的特点有哪些

1:异步IO

异步相相应的就是不同步,使用异步能够更高的分配资源

在node中绝大多数操作都是异步的方式进行调用,node团队排除万难在底层构建了非常多异步io的API,从文件读取到网络请求等,这种意义在于,在node中我们能够从语言层面非常自然的进行并行的io操作,每一个调用之间不用多余等待

比如读取两个文件,採用同步的方式会是(操作1+操作2)总时间

而异步则是max(操作1+操作2)

2:事件与回调函数

node选择的是javascript,javascript不仅在前段担任很多其它职责,在后端相同担任职责,它将前段浏览器中应用广泛并且成熟的时间引入到了后端,配合异步io将时间点暴露给了业务逻辑

案例:node能够在后端创建一个server,处理用户发送的请求

相比之下,不管前段还是后端,事件都是经常使用的

事件的编程方式是轻量级松耦合之关注时间点的,可是在多个异场步任务的场景下,时间之间的相互独立,怎样合作将会是一个问题





node中的事件回调是node 的一大特色,他攻克了这个问题,回调函数是最好的接受异步调用返回数据的方式,(非常多老程序猿接受不了这一点),代码的编写顺序与运行顺序并无太大的关系(这也导致了在流程控制方面,不是非常好的阅读,所以还是建议尽量写正常代码)

3:单线程处理方式

node保持了javascript在浏览器中单线程的特点,在node中无法享受不论什么状态,所以不用操心同步问题

可是无法避免的他也有自己的缺点

无法利用多核cpu

产生错误将全体退出程序

4:跨平台

在各个平台下都能够使用





为什么选择 javaScript

javaScript诞生以来位置一直非常尴尬,之前基本上没人把它当作一个编程语言(没有非常多程序猿会为了js花费太多的心思来学习)仅仅是把它当作一个网页小脚本,很多其它的应用场景在于数据验证(事实上这才是最早公布js的用处),可是随着web2.0时代的到来,js已经在网页中发挥出来很多其它的特色,比如让你的网页更加有动画感

在web2.0时代很多其它的前段框架被开发人员开发出来,最初仅仅是为了解决浏览器之间不兼容性问题,比如jquery,可是随着很多其它的用户需求在前断出现,js从前段应用出如今了开发应用级别上面,

工具(浏览器兼容性)——组件(功能模块)——框架(功能模块组织)——应用(应用模块组织)





CommonJS让javascript焕发的第二春,他让js在不论什么地方能够执行起来

js本身的弱点

没有模块系统

标准库比較少——核心库

标准接口--比如数据库连接

包管理系统——自己主动载入和安装依赖的问额

CommonJS攻克了上述全部问题

server端js

命令行工具

桌面入行应用程序

CommonJS模块规范

模块引入

require 用来引入模块

模块定义

module代表当前模块对象

exports导出模块

nodeJs基础的更多相关文章

  1. [转]Nodejs基础中间件Connect

    Nodejs基础中间件Connect 从零开始nodejs系列文章,将介绍如何利Javascript做为服务端脚本,通过Nodejs框架web开发.Nodejs框架是基于V8的引擎,是目前速度最快的J ...

  2. Nodejs基础中间件

    Nodejs基础中间件Connect   http://www.tuicool.com/articles/emeuie 关于作者 张丹(Conan), 程序员Java,R,PHP,Javascript ...

  3. Nodejs第一天-{Nodejs基础 深刻理解浏览器 环境变量 基础语法}

    Nodejs第一天 1.什么是Nodejs ​ Nodejs是一个可以运行(解析)ECMAScript的环境; ​ ECMAScript是规定了一些列的语法 ,这些语法想要解析的执行就需要放在某个环境 ...

  4. nodejs 基础篇整合

    nodeJs 基础篇整合 最近有朋友也想学习nodeJs相关方面的知识,如果你是后端想接近前端,node作为一门跑在服务端的JS语言从这里入门再好不过了.如果你正好喜欢前端,想走的更高,走的更远.no ...

  5. 前端知识体系-NodeJS相关】NodeJS基础知识全面总结

    NodeJS基础知识 1. Node的全局对象和全局变量 1.1 全局对象:所有模块都可以调用的 global:表示Node所在的全局环境,类似于浏览器的window对象. process:该对象表示 ...

  6. Nodejs基础中间件Connect

    http://www.tuicool.com/articles/emeuie 关于作者 张丹(Conan), 程序员Java,R,PHP,Javascript weibo:@Conan_Z blog: ...

  7. 02 nodejs命令参数(NodeJS基础入门)

    声明:本文章可供有一定js基础的朋友参考nodejs入门,本文未讲解nodejs的安装,如有需要的同学可以加QQ3382260752找我,进行交流学习. 建议使用开发软件:webstorm或hbuil ...

  8. nodejs基础教程回顾01

    最近在复习nodejs,因为框架太多隔一段时间不用就会忘了,所以没办法必须时常拿出来练练,就像家里有好几辆车,要时不常的轮流开一圈.我就从最基础的开始写,怎么下载安装就不说了,首先是nodejs的三类 ...

  9. NodeJS基础总结(一)

    NodeJS官网网址:https://nodejs.org/en/ 使用require方法加载fs核心模块 var fs = require('fs'); 一.读取文件//   第一个参数就是尧读取的 ...

  10. NodeJS基础教程

    关于 本书致力于教会你如何用Node.js来开发应用,过程中会传授你所有所需的“高级”JavaScript知识.本书绝不是一本“Hello World”的教程. 状态 你正在阅读的已经是本书的最终版. ...

随机推荐

  1. nginx学习12 ngx_cycle_t 和 ngx_init_cycle

    在nginx在启动过程,ngx_init_cycle这个函数最初始工作.变量的初始化存储在ngx_cycle_t这个结构体中,为了深入了解这个函数都做了那些初始化工作,就化时间研究了一下.并写下来以便 ...

  2. ZTESoft 持续集成 编年史 之 持续集成探索---平台选择

    2012 年 7.8 月份,我们逐渐了解了持续集成的概念,同时我们家庭作坊的dailybuild方式不断爆出各种问题,并且已经无法满足日益增长的各种需求. 我们开始探索持续集成的不同实现方式,首先我们 ...

  3. AngularJs 基础(60分钟入门) (转)

    AngularJs是一个不错的用于开发SPA应用(单页Web应用)的框架.单页Web应用(single page web application,SPA),就是只有一张Web页面的应用.浏览器一开始会 ...

  4. SVN的命令解析(感觉不错就转了)

    本文链接: http://www.php-oa.com/2008/03/12/svnminglingzailinuxxiadeshiyong.html .将文件checkout到本地目录 svn ch ...

  5. 怎样从host之外连接到docker container

    启动docker的时候的指令使用 sudo docker -H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock -d & 这样就能使dock ...

  6. 对consistencygroup的一些研究和实践

    声明: 本博客欢迎转载,但请保留原作者信息! 作者:李人可 团队:华为杭州OpenStack团队 consistency group,直译是一致性组,是Juno版本号cinder新引进的一个概念.顾名 ...

  7. 安装pygame

    pygame的安装 我们首先要去到:http://www.pygame.org/download.shtml 下载我们所需要的软件包: 我选择的是:pygame-1.9.2a0.win32-py3.2 ...

  8. (step7.2.1)hdu 1395(2^x mod n = 1——简单数论)

    题目大意:输入一个整数n,输出使2^x mod n = 1成立的最小值K 解题思路:简单数论 1)n可能不能为偶数.因为偶数可不可能模上偶数以后==1. 2)n肯定不可能为1 .因为任何数模上1 == ...

  9. malloc功能具体解释

    一.原型:extern void *malloc(unsigned int num_bytes); 头文件:#include <malloc.h> 或 #include <alloc ...

  10. Moran’s I空间统计中出现内存溢出的问题

    在经济学.资源管理.生物地理学.政治地理学和人口统计等领域,经常会有如下的研究需求: 研究区域中的富裕区和贫困区之间的最清晰边界在哪里? 研究区域中存在可以找到异常消费模式的位置吗? 研究区域中意想不 ...