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导出模块

最新文章

  1. C#面向对象特征的具体实现及作用详解
  2. OWIN的理解和实践(三) –Middleware开发入门
  3. iOS 中 #import同@class之间的区别
  4. 【shell】while与until循环
  5. Centos6.3建立FTP
  6. android应用版本更新功能---完整版
  7. Silverlight 中 读取XML文件
  8. Mysql字符集修改为UTF8
  9. 非常全的VsCode快捷键
  10. keras图像风格迁移
  11. Java成神路上之设计模式系列教程之一
  12. MySQL 多表结构的创建与分析
  13. 四则运算安卓版ver.mk3
  14. 如何在DOS窗口复制和粘贴命令
  15. GoldenGate 12.3 MA架构介绍系列(4)–Restful API介绍
  16. TCP可靠传输:校验和,重传控制,序号标识,滑动窗口、确认应答
  17. Xilinx SDK编译Microblaze时出错
  18. Java-Runoob-高级教程-实例-方法:13. Java 实例 – for 和 foreach循环使用
  19. canvas 实现赛车游戏
  20. Mac下使用PF进行端口转发和防火墙配置(类似Linux的iptables)

热门文章

  1. Win7下不能查看xp系统共享的文件,解决方法
  2. malloc一次性最大能申请多大内存空间
  3. 三星galaxy S4快捷功能
  4. 推测的手机型号和cpu模型
  5. 二叉树的建立与遍历(山东理工OJ)
  6. php查找字符串是否存在
  7. UVALive 3890 Most Distant Point from the Sea(凸包最大内接园)
  8. Hadoop-2.2.0中国文献——MapReduce 下一代 —配置单节点集群
  9. NYOJ710 外星人的供给站 【贪心】
  10. 【小白的java成长系列】——顶级类Object源代码分析