一、Node.js介绍

Node.js是一个Javascript运行环境(runtime environment),发布于2009年5月,由Ryan Dahl开发,实质是对Chrome V8引擎进行了封装。Node.js 不是一个 JavaScript 框架,不同于CakePHPDjangoRails。Node.js 更不是浏览器端的库,不能与 jQuery、ExtJS 相提并论。Node.js 是一个让 JavaScript 运行在服务端的开发平台,它让 JavaScript 成为与PHPPythonPerlRuby 等服务端语言平起平坐的脚本语言 [1] 
Node.js对一些特殊用例进行优化,提供替代的API,使得V8在非浏览器环境下运行得更好。V8引擎执行Javascript的速度非常快,性能非常好。 [2]  Node.js是一个基于Chrome JavaScript运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动, 非阻塞I/O 模型而得以轻量和高效,非常适合在分布式设备上运行数据密集型的实时应用(引用百度百科介绍)。
 
Node.js官网:https://nodejs.org/en/
Node.js文档地址:https://nodejs.org/en/docs/
 
通过上面的介绍我们可以将Node.js的特点归纳为这么几个?
 
(1)它是一个Javascript运行环境;

(2)依赖于Chrome V8引擎进行代码解释;

(3)事件驱动;

(4)非阻塞I/O;

(5)轻量、可伸缩,适于实时数据交互应用;

(6)单进程,单线程;

 
二、安装
 
安装地址为:https://nodejs.org/en/download/
 
根据不同系统可以选择对应的版本,如下图所示:

windows的安装很简单,几乎是一键安装下一步下一步这样的,至于Linux的话,以Ubuntu16.04为例,sudo apt-get install nodejs和 sudo apt-get install nodejs-legacy输入这两条命令即可安装成功。

三、Node.js的应用场景

参考该篇博文:https://www.cnblogs.com/gassnake999/p/7044583.html

应用场景一共15个,如下所示:

(1) Web开发:Express + EJS + Mongoose/MySQL;

(2) REST开发:Restify;

(3)Web聊天室(IM):Express + Socket.io;

(4) Web爬虫:Cheerio/Request;

(5)Web博客:Hexo;

(6)Web论坛: nodeclub;

(7)Web幻灯片:Cleaver

(8)前端包管理平台: bower.js

(9)OAuth认证:Passport

(10)定时任务工具: later

(11)浏览器环境工具: browserify;

(12)命令行编程工具:Commander

(13) Web控制台工具: tty.js;

(14)客户端应用工具: node-webkit

(15)操作系统: node-os

其实还有更多只不过本文并没有列举出来,总而言之,只有想不到没有做不到。

 
四、Node.js的优缺点
 
主要参考:https://www.cnblogs.com/lsgxeva/p/7993271.html

优点:

(1)高并发(最重要的优点);

(2)适合I/O密集型应用;

缺点:

(1)不适合CPU密集型应用,CPU密集型应用给Node带来的挑战主要是:由于JavaScript单线程的原因,如果有长时间运行的计算(比如大循环),将会导致CPU时间片不能释放,使得后续I/O无法发起;

解决方案:分解大型运算任务为多个小任务,使得运算能够适时释放,不阻塞I/O调用的发起;

(2)只支持单核CPU,不能充分利用CPU;

(3)可靠性低,一旦代码某个环节崩溃,整个系统都崩溃;

原因:单进程,单线程

解决方案:

a.Nnigx反向代理,负载均衡,开多个进程,绑定多个端口;

b.开多个进程监听同一个端口,使用cluster模块;

(4)开源组件库质量参差不齐,更新快,向下不兼容;

(5)Debug不方便,错误没有stack trace;

Node.js实战(一)之概述的更多相关文章

  1. Node.js实战(二)之HelloWorld示例

    经过前面的Node.js实战(一)之概述 想必你应该对Node.js的概念.应用场景.优缺点等有个大致的了解,同时你本地Windows或者Linux上已经准备好了Node.js环境. 下面我们来进入每 ...

  2. 《Node.js实战(双色)》作者之一——吴中骅访谈录

  3. iKcamp团队制作|基于Koa2搭建Node.js实战项目教学(含视频)☞ 环境准备

    安装搭建项目的开发环境 视频地址:https://www.cctalk.com/v/15114357764004 文章 Koa 起手 - 环境准备 由于 koa2 已经开始使用 async/await ...

  4. iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 错误处理

    沪江CCtalk视频地址:https://www.cctalk.com/v/15114923887518 处理错误请求 爱能遮掩一切过错. 当我们在访问一个站点的时候,如果访问的地址不存在(404), ...

  5. iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 记录日志

    沪江CCtalk视频地址:https://www.cctalk.com/v/15114923883523 log 日志中间件 最困难的事情就是认识自己. 在一个真实的项目中,开发只是整个投入的一小部分 ...

  6. iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 解析JSON

    视频地址:https://www.cctalk.com/v/15114923886141 JSON 数据 我颠倒了整个世界,只为摆正你的倒影. 前面的文章中,我们已经完成了项目中常见的问题,比如 路由 ...

  7. iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 处理静态资源

    视频地址:https://www.cctalk.com/v/15114923882788 处理静态资源 无非花开花落,静静. 指定静态资源目录 这里我们使用第三方中间件: koa-static 安装并 ...

  8. iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 视图Nunjucks

    视频地址:https://www.cctalk.com/v/15114923888328 视图 Nunjucks 彩虹是上帝和人类立的约,上帝不会再用洪水灭人. 客户端和服务端之间相互通信,传递的数据 ...

  9. iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 代码分层

    视频地址:https://www.cctalk.com/v/15114923889408 文章 在前面几节中,我们已经实现了项目中的几个常见操作:启动服务器.路由中间件.Get 和 Post 形式的请 ...

随机推荐

  1. JAVA通过XPath解析XML性能比较

    转自[http://www.cnblogs.com/mouse-coder/p/3451243.html] 最近在做一个小项目,使用到XML文件解析技术,通过对该技术的了解和使用,总结了以下内容. 1 ...

  2. Redis——非阻塞IO和队列

    Redis是个高并发的中间件,但是确实是单线程.而且,Nginx.Node.js等也是单线程的.Redis通过非阻塞IO(IO多路复用)处理那么多的并发客户端连接,并且,由于Redis所有的数据都在内 ...

  3. 使用Spring的AbstractRoutingDataSource类来进行拓展多数据源

    1.继承抽象类AbstractRoutingDataSource 通过重写这个抽象类的determineCurrentLookupKey()方法来决定返回哪个数据库. 2.配置多个数据库 <be ...

  4. hadoop的checkpoint检查时间参数设置

    1.通常情况下,SecondaryNameNode 每隔一小时执行一次. 在hdfs-default.xml文件中: <property> <name>dfs.namenode ...

  5. CPU单核多核区别【转载】

    CPU个数.CPU核心数.CPU线程数 我们在选购电脑的时候,CPU是一个需要考虑到核心因素,因为它决定了电脑的性能等级.CPU从早期的单核,发展到现在的双核,多核.CPU除了核心数之外,还有线程数之 ...

  6. 自定义MVC框架之工具类-文件上传类

    截止目前已经改造了3个类: ubuntu:通过封装验证码类库一步步安装php的gd扩展 自定义MVC框架之工具类-分页类的封装 该文件上传类功能如下: 1,允许定制上传的文件类型,文件mime信息,文 ...

  7. django-全文检索

    全文检索不同于特定字段的模糊查询,使用全文检索的效率更高,并且能够对于中文进行分词处理 需要的第三方库: haystack:django的一个包,可以方便地对model里面的内容进行索引.搜索,设计为 ...

  8. Echarts图表常用功能配置,Demo示例

    先看下效果图: 就如上图所示,都是些常用的基本配置. Legend分页,X轴设置,Y轴设置,底部缩放条设置, 数值显示样式设置,工具箱设置,自定义工具按钮, 绑定点击事件等等.这些配置代码中都做了简单 ...

  9. CSS 美化复选框 - 无图片方式

    今天和大家分享一个不使用图片美化复选框的方式.来看下效果图吧,如下是3种不同状态下的效果: 一. Html结构 <div class="check-wrap"> < ...

  10. SD从零开始41-44

    [原创] SD从零开始41 科目确定(Account determination) 使用科目确定Using Account Determination 你将需要在几个不同的领域确定将要记账的科目: 用 ...