【译】理解node

我已经介绍过Node.js一般会引起两种反应:人们一般会立即“理解”或者因为困惑而终止。

如果你现在已经在第二组里,请看我试着解释node:

它是一个命令行工具。你下载一个tarball,解压并安装源代码。

它允许你在终端输入'node my_app.js'运行Javascript程序。

JS运行于V8 javascript engine(它是的Google Chrome如此之快)。

Node提供一个Javascript APT来链接网络和文件系统。

“但我能用ruby, python, php, java, ... 做任何事!”

我听到了。你是对的!对不起,Node不是来帮你做工作的奇怪的独角兽。它只是一个工具,它可能不会完全地代替你常规的工具,至少目前不会。

"直截了当地说!"

好吧,我会的。基本上,当你需要同时做很多事的时候,Node很好。你曾经写过一段儿代码并说“我希望这能够并行的运行”?好,Node里一切都是并行的运行,除了你的代码。

"嗯?"

就是这样,一切都是并行运行的,除了你的代码。为了理解这点,想象你的代码是国王,node是他的仆人军队。

日子是从一个仆人唤醒国王问他所需开始的。国王给这位仆人一张任务列表然后再小睡一会。这位仆人开始向他的同事们分发任务并让他们工作。

每当一位仆人完成一份工作,当他完成一个任务,他就排列好给国王汇报。国王每次让一名仆人进来听他汇报。有时,当他走出去的时候国王会给他更多的的任务。

生活很美好,对于国王的仆人,他们并行地携带他的任务,但是同事只汇报一个结果, 这样国王可以专注。

"那太棒了,但是你能不做愚蠢的比喻而认真的对我讲吗?

当然。一个简单的Node程序这这样的:

代码

你的代码给Node两个任务读写一个文件,然后休眠。当Node完成一个任务,回调函数被触发。但是这里只能同时运行一个回调函数。直到回调函数执行完毕之前,所有其他回调函数需要排队等待。另外,执行任何一个回调函数是无序的。

“所以我不需要担心代码同时解除相同的数据?”

你明白了!这就是全部Javascript单线程/事件轮询的精华!

"很好,但是我为什么要用他呢?"

一个原因是高效。在一个web应用中,主要的响应花费在执行查询数据库。使用Node,会减少响应的时间当执行最慢的查询。

另外一个原因是JavaScript。你能在浏览器和服务器之间分享代码。JavaScript也正在成为全球性的编程语言。无论你过去是否做过python, ruby, java, php...... 在过程中你可能会用到javascript,对吧?

最后一个原因就是运行速度。V8引擎在这个星球上不断扩张他的境界。我现在 无法想到哪个语言会在速度方面对JavaScript造成威胁。另外,In addition to that, node的I/O设备非常轻量,会让你尽可能地完全地利用你全部系统的空间。

"所以你劝说我从现在开始用node来做所有我的应用?"

可以这么说但又不是。一旦你开始挥动node的锤子,一切都看起来像个钉子。但是如果你正在做一个很紧迫的项目,你也许需要以下几个依据来做决定:

低响应时间,高并行更重要?Node擅长于此。

项目多大? 小项目还适合。大项目应该仔细评估(多种类库,资源用来修改问题,或者逆流而上,等等)。

"Node可以运行在windows吗?"

不行。如果你在windows,你需要用Linux运行一个虚拟机(我推荐VirtualBox)。Windows支持node在计划之中,除非你想帮助他,否则你得屏住呼吸等几个月。

"在node中我能链接DOM吗?"

问的非常好!答案是不行,DOM是浏览器的东西,node JS的运行引擎应该从那混乱中完全地分开。然而,有些人正在做这样的事:the DOM as a node module, 这会让许多有趣的事变成可能,比如在可以互动进行单元测试。

"事件驱动编程很难吗?"

那就不一定了。如果你已经学会了在浏览器里玩AJAX的请求和响应,那么适应node应该不是问题。无论如何,测试驱动开发能帮你想到可维护的设计。

"谁在用呢?"

这里是一个小的不完全的列表node wiki(找到 "Companies using Node").Yahoo正在给YUI做node实验Plurk正在应用于很多的comet。并且, Paul Bakaus 正在建立mind-blowing game engine一些node后端的东西。


        ———— 2015.10.15 摘自Debuggable,原文链接

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 162,158评论 4 370
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,600评论 1 307
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 111,785评论 0 254
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,655评论 0 220
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 53,075评论 3 295
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 41,002评论 1 225
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,146评论 2 318
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,918评论 0 211
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,671评论 1 250
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,838评论 2 254
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,318评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,636评论 3 263
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,343评论 3 244
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,187评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,982评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,126评论 2 285
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,934评论 2 279

推荐阅读更多精彩内容