阅读模式:

什么是node.js

查看:1387  回复:0  类型:  来源:百度搜索  标签 node.js javascript

        Node.js 就是运行在服务端的 JavaScript。  Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台。  Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。

node.js发展历程:

        Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。          
Node.js 的包管理器 npm,是全球最大的开源库生态系统。

        2009年2月,Ryan Dahl在博客上宣布准备基于V8创建一个轻量级的Web服务器并提供一套库。         2009年5月,Ryan Dahl在GitHub上发布了最初版本的部分Node.js包,随后几个月里,有人开始使用Node.js开发应用。

        2009年11月和2010年4月,两届JSConf大会都安排了Node.js的讲座。

        2010年年底,Node.js获得云计算服务商Joyent资助,创始人Ryan Dahl加入Joyent全职负责Node.js的发展。

        2011年7月,Node.js在微软的支持下发布Windows版本。

特性和优点:

        V8引擎本身使用了一些最新的编译技术。这使得用Javascript这类脚本语言编写出来的代码运行速度获得了极大提升,又节省了开发成本。对性能的苛求是Node的一个关键因素。 Javascript是一个事件驱动语言,Node利用了这个优点,编写出可扩展性高的服务器。Node采用了一个称为“事件循环(event loop)”的架构,使得编写可扩展性高的服务器变得既容易又安全。提高服务器性能的技巧有多种多样。Node选择了一种既能提高性能,又能减低开发复杂度的架构。这是一个非常重要的特性。并发编程通常很复杂且布满地雷。Node绕过了这些,但仍提供很好的性能。

        Node采用一系列“非阻塞”库来支持事件循环的方式。本质上就是为文件系统、数据库之类的资源提供接口。向文件系统发送一个请求时,无需等待硬盘(寻址并检索文件),硬盘准备好的时候非阻塞接口会通知Node。该模型以可扩展的方式简化了对慢资源的访问, 直观,易懂。尤其是对于熟悉onmouseover、onclick等DOM事件的用户,更有一种似曾相识的感觉。

        虽然让Javascript运行于服务器端不是Node的独特之处,但却是其一强大功能。不得不承认,浏览器环境限制了我们选择编程语言的自由。任何服务器与日益复杂的浏览器客户端应用程序间共享代码的愿望只能通过Javascript来实现。虽然还存在其他一些支持Javascript在服务器端 运行的平台,但因为上述特性,Node发展迅猛,成为事实上的平台。

        在Node启动的很短时间内,社区就已经贡献了大量的扩展库(模块)。其中很多是连接数据库或是其他软件的驱动,但还有很多是凭他们的实力制作出来的非常有用的软件。

         最后,不得不提到的是Node社区。虽然Node项目还非常年轻,但很少看到对一个项目如此狂热的社区。不管是新手,还是专家,大家都围绕着项目,使用并贡献自己的能力,致力于打造一个探索、支持、分享、听取建议的乐土。

        Node.js的优点 nodejs作为一个新兴的前端框架,后台语言,有很多吸引人的地方: RESTful API 单线程 Node.js可以在不新增额外线程的情况下,依然可以对任务进行并发处理 —— Node.js是单线程的。它通过事件轮询(event loop)来实现并发操作,对此,我们应该要充分利用这一点 —— 尽可能的避免阻塞操作,取而代之,多使用非阻塞操作。

        非阻塞IO

        V8虚拟机

        事件驱动

分享到:
0 0

*有问题之处烦请在评论中指出非常感谢!
不是我想要的内容,继续搜索:

扫描二维码手机查看

发布评论:


登录:
  表情:
评论话题
推荐阅读:
php设置cookie为HttpOnly防止XSS攻击   阅读:3300linux命令中执行php脚本   阅读:2082比phpexcel还要简单的excel CSV 一键导入数据到数据库   阅读:2133centos 7 开启网络   阅读:1946centos 7 安装 mysql-5.7   阅读:2489mysql 为什么添加索引可以提高访问速度   阅读:2219session与cookie的区别   阅读:1759php中地址引用&的真正理解-变量引用、函数引用、对象引用   阅读:1834web项目高并发量网站解决方案   阅读:1584shell发送邮件脚本   阅读:461简单的DOS攻击之死亡之ping详解   阅读:15146nginx编译安装后对nginx进行平滑升级   阅读:702centos 7 安装 mysql-5.7   阅读:2489mysql数据一键导出到csv文件   阅读:2014“米粉节”背后的故事——小米网抢购系统开发实践   阅读:1609linux php7安装yaf扩展   阅读:2106移动端js触摸touch详解(附带案例源码)   阅读:5602php中地址引用&的真正理解-变量引用、函数引用、对象引用   阅读:1834浅谈javascript的函数节流   阅读:1662php打印九九加法表   阅读:2561php压缩页面的html代码一行显示   阅读:2615phpexcel 超简单从数据库一键导出数据到excel教程   阅读:2777mysql的四种索引类型   阅读:4382mysql共享锁和排他锁详解   阅读:2305移动端自适应rem原理   阅读:5361面试的时候和你谈理想,是理想or入坑?   阅读:2221霍金24岁博士毕业论文在线预览   阅读:1753ajax+php 实现一个简单的在线聊天室功能(附带源码)   阅读:3565phpexcel 超简单从数据库一键导出数据到excel教程   阅读:2777linux rarcrack破解rar、zip和7z压缩包简单密码的工具   阅读:3240html5 离线缓存的使用   阅读:1695面试的时候和你谈理想,是理想or入坑?   阅读:2221mysql 为什么添加索引可以提高访问速度   阅读:2219最简单的Banner轮播左右切换效果代码及实现思路(附带源码)   阅读:15091移动端js触摸touch详解(附带案例源码)   阅读:5602php中地址引用&的真正理解-变量引用、函数引用、对象引用   阅读:1834简单的DOS攻击之死亡之ping详解   阅读:15146html5 离线缓存的使用   阅读:1695linux时间戳有趣的情人节秒1234567890   阅读:1634用php从1加到100的值   阅读:3426比phpexcel还要简单的excel CSV 一键导入数据到数据库   阅读:2133javascript对cookie操作详细代码函数   阅读:1952解决 nginx 413 request entity too large   阅读:1611浅谈javascript的函数节流   阅读:1662分享:淘宝技术这十年   阅读:1851php压缩页面的html代码一行显示   阅读:2615mysql数据库性能的基本优化   阅读:2011php设置cookie为HttpOnly防止XSS攻击   阅读:3300shell脚本破解十位数内的所有纯数字rar加密压缩包脚本   阅读:3180php打印九九乘法表   阅读:2620