【转载】【Todo】Nodejs的优缺点

Nodejs的优缺点,这里面讲的比较详细。有时间可以多看看别人的分析。

https://www.zhihu.com/question/19653241

Node.js 的架构与 Django, Rails 等传统的 Framework 不同,不需要放在 Nginx / Apache 后,利用 WSGI, CGI 之类的接口一板一眼的 [接受Request] -> [运行程序逻辑] -> [生成并返回Response]。这是一个巨大的变化,之前一些无法想象的功能都有可能实现了。比如 https://github.com/Miserlou/DirtyShare 可以用浏览器实现 P2P 的文件传输。正因为 Node.js 可以更精细的控制 Request 和 Response 的时间和内容,websocket 似乎天生就是为 Node.js 而生的,而配合 http://socket.io 这个神奇的库之后,在 realtime webapp 这个领域,Node.js 已经没有对手了。
Node.js 的包管理器 npm 设计得比 python 和 ruby 好很多。有很多的 module 开发者。
当然也有一些缺点
Debug 很困难。没有 stack trace,出了问题很难查找问题的原因。
如果设计不好,很容易让代码充满 callback 。实在受不了的可以考虑一下 https://github.com/laverdet/node-fibers/ 这个项目。不过 Node.js 的核心团队并不推荐使用。
我们在用 Node.js 处理知乎主站的 web 实时推送。你现在看到的 Feed 、消息的实时更新,背后就是几个 node 进程扛起来的。

优点:

1. 处理高并发场景性能更高

在用 http://socket.io 之前,推送服务是用 ajax polling 做的。我们用 Tornado 和 Node.js 做过两个版本的推送服务。在当时的测试环境下,Node.js 的 CPU 时间是 Tornado 的三分之一,内存使用是 Tornado 的一半,代码行数只有 Tornado 的三分之一(Node.js 版是用 coffee 写的)。后来我们使用了 http://socket.io,CPU 开销进一步降低。

2. 函数式编程非常适合写异步回调链

用 Node.js 配合 CoffeeScript 写异步操作链非常便利,相比之下 Tornado 无论是写命名函数的回调,还是 yield 一个 Task 都没那么自然。

缺点:

1. 大量匿名函数使异常栈变得不好看。
2. 无法以 request 为单位 catch 异常,必须确保不要在不 catch 异常的第三方库的回调里的抛异常,这在一个异步操作链条里是一件比较麻烦的事。解决方法之一是对那些不 catch 异常的第三方库做一些封装,把所有的异常变成事件,改成 on(‘error‘) 形式的 API。
时间: 2024-11-05 21:13:19

【转载】【Todo】Nodejs的优缺点的相关文章

[转载]用NodeJS打造你的静态文件服务器

http://www.open-open.com/bbs/view/1321344823593 本文是我对V5Node项目的总结,该项目的特性包括: 项目大多数的文件都是属于静态文件,只有数据部分存在动态请求. 数据部分的请求都呈现为RESTful的特性. 所以项目主要包含两个部分就是静态服务器和RESTful服务器.本文讲的是静态文件服务器部分. 既是一个新的项目,那么创建v5node目录是应该的.既是一个Node应用,创建一个app.js文件也是应该的. 我们的app.js文件里的结构很明确

【转载】nodejs,npm,express分别什么?

很多刚刚接触nodejs的初学者,都会经历一个很繁冗的环境安装过程. 一般主要要安装nodejs,npm和express三样东西.那么这三样东西分别是干什么的呢? 本篇文章就大致介绍一下这三样东西分别是干什么的: nodejs 首先要说的是nodejs,既然我们要装nodejs,那这个其实就没什么好解释的. nodejs就是运行框架,就像C#和.net,JAVA和JRE一样,nodejs就是nodejs. 所以其实装了nodejs以后,nodejs其实就已经可以编码和运行了. npm npm是一

[Todo] Nodejs学习及Spider实验(包括php入门学习、React入门学习)

/Users/baidu/Documents/Data/Interview/Web-Server开发 深入浅出Node.js-f46c http://blog.csdn.net/u012273376/article/details/52736906 利用nodejs做爬虫 http://www.runoob.com/nodejs/nodejs-callback.html nodejs学习之路 http://www.runoob.com/php/php-tutorial.html php学习之路

【转载】NodeJS、NPM安装配置步骤(windows版本)

1.windows下的NodeJS安装是比较方便的(v0.6.0版本之后,支持windows native),只需要登陆官网(http://nodejs.org/),便可以看到首页的“INSTALL”按钮,直接点击就会自动下载安装了. 2.安装过程基本直接“NEXT”就可以了.(windows的安装msi文件在过程中会直接添加path的系统变量,变量值是你的安装路径,例如“C:\Program Files\nodejs”). 3.安装完成后可以使用cmd(win+r然后输入cmd进入)测试下是否

[转载]NodeJS优缺点及适用场景讨论

http://www.xprogrammer.com/159.html 概述:NodeJS宣称其目标是“旨在提供一种简单的构建可伸缩网络程序的方法”,那么它的出现是为了解决什么问题呢,它有什么优缺点以及它适用于什么场景呢? 本文就个人使用经验对这些问题进行探讨. 一. NodeJS的特点 我们先来看看NodeJS官网上的介绍: Node.js is a platform built on Chrome’s JavaScript runtime for easily building fast,

NodeJS优缺点及适用场景讨论

概述:NodeJS宣称其目标是“旨在提供一种简单的构建可伸缩网络程序的方法”,那么它的出现是为了解决什么问题呢,它有什么优缺点以及它适用于什么场景呢? 本文就个人使用经验对这些问题进行探讨. 一. NodeJS的特点 我们先来看看NodeJS官网上的介绍: Node.js is a platform built on Chrome’s JavaScript runtime for easily building fast, scalable network applications. Node.

NodeJs教程(介绍总结!)终于在网上找到一个靠谱点的了T_T

本人吐槽!本人是学渣,然后网上关于nodeJS的大多都是坑,简直让人要奔溃了.若非最近总是被要求要nodeJS,坚决不会去碰的...天生对cmd命令觉得无比的高大上,尽管一直在用git版本控制器!然后我也和估计和看此文的小白们同一起点,如果有node大神,跪求传授必杀技,吐槽完毕! 首先无非就是什么是NodeJS? 简单的说 Node.js 就是运行在服务端的 JavaScript. Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台. Node.js是一个事件驱

nodejs笔记01

昨天接触了nodejs: 2009年出来的 1.nodejs的优缺点 1>性能      有人测试是php的86倍(不知道真的假的) 2> 好学  与js的语法,对象,方法一样 3>前后台一样是js ,配合更方便 -------------------------- 1>缺少资料 2>对程序员要求更高 3>缺乏环境 2.  nodejs系统自带的模块: http (http协议的) ,fs (对文件的操作),net (比如socket) 第三方的模块mysql:   n

nodejs事件轮询详述

目录 概述 nodejs特点 事件轮询 关于异步方法 概述 关于nodejs的介绍网上资料非常多,最近由于在整理一些函数式编程的资料时,多次遇到nodejs有关的内容.所以就打算专门写一篇文章总结一下nodejs相关知识,包括“说它单线程是什么意思”.“非阻塞又是指什么”以及最重要的是它的“事件轮询”的实现机制. 本文不介绍nodejs的优缺点(适用场合).nodejs环境怎样搭建以及一些nodejs库的使用等等这些基础知识. nodejs特点 网上任何一篇关于nodejs的介绍中均会提及到no