什么 Node.js?

我不太明白是什么
http://en.wikipedia.org/wiki/Node.js
. 也许这是因为我基本上是业务应用程序的Web开发人员。 这是什么和这个利益?

据我所知到目前为止,它就是这样:

编程模型由事件管理,尤其是如何流程
http://en.wikipedia.org/wiki/Input/output
.

他用
http://en.wikipedia.org/wiki/JavaScript
, 和句法分析仪
http://en.wikipedia.org/wiki/V ... %2529
.

它可以轻松用于创建并行服务器应用程序。

我的理解是对吗? 如果是这样,有什么优势 evented I/O, - 它是平行的更多吗? 另外,是否方向是 Node.js 相同的框架,以及基于的编程模型 JavaScript /V8/?
已邀请:

风见雨下

赞同来自:

我用 Node.js 在工作,发现它非常强大。 被迫选择一个词来描述 Node.js, 我会说 "interesting" /什么不是纯粹的形容词/. 社区积极发展并增长。 JavaScript, 尽管它奇怪,但它可能是一种用于编程的优秀语言。 你会每天重新考虑自己的理解。 "best practice" 和结构良好的代码模式。 现在B. Node.js 巨大的思想能量和工作中的工作使您暴露给所有这些思考 - 伟大的心理举重。

Node.js 在生产中,当然,也许,但远非 "turn-key" deployment, 这似乎承诺了文件。 从 Node.js v0.6.x "cluster" 被整合到平台中,提供其中一个主座块,但我的脚本 "production.js" 还是 ~150 用于处理事物的逻辑线,例如创建杂志目录,处理尸体工人等生产服务 "serious" 您还需要准备好用于限制传入连接并执行所有内容 Apache 使其成为
http://en.wikipedia.org/wiki/PHP
. 公平起见
http://en.wikipedia.org/wiki/Ruby_on_Rails
它有

确切地

这个问题。 在两个补充机制的帮助下解决了它: 1/ 放置 Ruby 在 Rails/Node.js 致敬 webserver /写在 C 并在地狱和背部核实/, 作为
http://en.wikipedia.org/wiki/Nginx
/或者
http://en.wikipedia.org/wiki/Apache_HTTP_Server
/
http://en.wikipedia.org/wiki/Lighttpd
/. webserver 可以有效地提供静态内容,保留访问日志,覆盖 URLs , 完全的
http://en.wikipedia.org/wiki/SSL
, 应用访问规则并管理多个子公司服务。 对于已陷入节点实际服务的查询, webserver 通过处理请求。 2/ 使用框架类型
http://unicorn.bogomips.org/
, 这将管理工作流程,定期处理它们等。 我还没有找到 Node.js 员工框架,似乎完全烘烤; 他可以存在,但我还没有找到它,仍然使用 ~150 我手动滚动的行 "production.js".

阅读框架等
http://expressjs.com/
, 认为标准做法是简单地通过一项服务服务。 jack-of-all-trades Node.js ... "app.use/express.static/__目录 + '/上市 '//". 对于负载和开发较小的服务,这可能是正常的。 但只要你试图在你的服务上施加大量临时加载并运行它 24/7,, 您将快速查找推动大型网站的图案,以获得良好的烘烤,硬化的C代码,如 Nginx, 转移其网站并处理所有静态内容请求 /......在你设置之前
http://en.wikipedia.org/wiki/C ... twork
, 作为
http://en.wikipedia.org/wiki/Amazon_CloudFront
//. 有点幽默和松散的负面看,看看
http://teddziuba.com/2011/10/n ... .html
.

Node.js 还发现了越来越多的缺陷应用程序。 即使您使用其他内容作为Web内容,您仍然可以使用 Node.js 作为使用模块的构造工具 npm, 组织您的代码,
https://github.com/substack/node-browserify
, 在一个资产中缝制它们,
https://github.com/mishoo/UglifyJS
, 最小化它 deployment. 使用JavaScript的完美网络
http://en.wikipedia.org/wiki/O ... match
, 通常它使它成为最简单的攻击方式。 例如,如果你想爬上一堆
http://en.wikipedia.org/wiki/JSON
负荷 JSON 答案,您必须使用我的模块
https://github.com/ddopson/underscore-cli
CLI, 服务带结构数据。

凡好 / 减数:

Pro: 用于服务器盖伊写作 JavaScript 后端是 "gateway drug" 探索现代模板 UI. 我不再害怕编写客户代码。

Pro: 倾向于鼓励正确的错误检查 /err 几乎所有反向挑战返回,强迫程序员处理它; 除了, async.js 和其他图书馆由范例治疗 "fail if any of these subtasks fails" 比典型的同步代码好得多/

Pro: 一些有趣的,通常艰难的任务变得微不足道 - 例如,在飞行中接收任务的状态,员工之间的通信或共享缓存状态

Pro: 基于扎实的包裹经理,一个庞大的社区和大量优秀图书馆 /npm/

Con: JavaScript 没有标准库。 您如此习惯于导入功能,当您使用时似乎很奇怪 JSON.parse 或者一些不需要添加模块的其他装配方法 npm. 这意味着有五个版本的一切。 甚至包括在内的模块 Node.js "core", 如果您对默认实现不满意,有五种选项。 这导致快速进化,也有一些混乱。

与简单的模型相比 one-process-per-request /
http://en.wikipedia.org/wiki/L ... %2529
/:

Pro: 可扩展性高达数千个活性化合物。 非常快,非常有效。 对于一个网上公园,它可能意味着减少 10 一旦需要的盒子数量 PHP 或者 Ruby

Pro: 轻松编写平行模板。 想象一下,你需要提取三个 /或者 N/ 来自的大二元对象
http://en.wikipedia.org/wiki/Memcached
. 做它 PHP ... 你刚写了一个检索第一个大型二进制对象的代码,然后是第二个,然后是第三个代码? 哇,什么缓慢。 有一个特殊的模块 PECL, 解决这个特殊问题 Memcached, 但是,如果你想获得一些数据,该怎么办 Memcached 与数据库请求并行? 在 Node.js, 由于异步范式以来,Web请求的存在使多个并行,非常自然。

Con: 异步代码基本上是更复杂的同步代码,并且开发人员可能很难难以清楚地了解实际意味着并行执行。 但是,它比通过阻塞写入任何多线程代码的困难显着。

Con: 例如,如果执行强化计算请求,则为 100 ms,, 他将停止处理在同一过程中处理的其他请求。 Node.js ... AKA,
http://en.wikipedia.org/wiki/C ... aring
. 它可以使用模板软化。 Web Workers /运行一个subprocess以解决昂贵的任务/. 此外,您可以使用大量的员工。 Node.js 并允许他们每个人同时处理一个请求 /仍然非常有效,因为没有回收过程/.

Con: 运行制造系统 MUCH 比模特更复杂 CGI , 例如 Apache + PHP ,
http://en.wikipedia.org/wiki/Perl
,
http://en.wikipedia.org/wiki/R ... %2529
等等,未经处理的例外将导致整个过程的停止,这将需要逻辑重启拒绝的工人。 /厘米。
http://nodejs.org/docs/latest/api/cluster.html
/. 具有错误本机代码的模块可能几乎无法中断该过程。 每当工人死亡时,他处理的所有请求都被丢弃,所以一个越野车 API 可以很容易地为其他挑战提供服务 APIs.

反对写作服务 "real" 在 Java / C# / C /C? 真的吗?/

Pro: 执行异步操作 Node.js 它比任何其他地方的线程安全完成更容易,并且可能提供更大的好处。 Node.js绝对是我工作过的最不痛苦的异步范式。 使用良好的库,它只比写同步代码更复杂。

Pro: 没有多线程错误 / 锁。 TRUE,您投资于提前编写更详细的代码,这表达了没有任何阻塞操作的正确异步工作流程。 而且你需要写一些测试并使这件事工作 /这是一种脚本语言,和 fat fingering variable names 仅在单位测试期间抓住/. BUT, 一旦你制造它,表面积
http://en.wikipedia.org/wiki/Heisenbug
- 紧张的问题,表现出每百万发射一次 - 这个表面积只需更低。 税收,编写代码 Node.js, 强烈装入编码阶段。 然后你是一个规则,最终得到了稳定的代码。

Pro: JavaScript 表达功能要容易得多。 难以用文字证明,但是
http://en.wikipedia.org/wiki/JSON
, 动态打字, lambda 符号,原型遗传,灯模块,任何内容 ... 通常通常需要较少的代码来表达相同的想法。

kon:也许你真的喜欢编码服务 Java?

得到另一个观点 JavaScript 和 Node.js, 退房
http://n0tw0rthy.wordpress.com ... e-js/
, 关于印象和开发者体验的博客记录 Java, 学习 Node.js.

模块

考虑 node, 请记住您选择图书馆 JavaScript 将

DEFINE

你的经历。 大多数人使用至少两个异步模板助理 /Step, Futures, Async/ 和糖模块 JavaScript /
http://en.wikipedia.org/wiki/Underscore.js
/.

助手 / JavaScript 糖:

http://documentcloud.github.com/underscore/
- 用它。 去做就对了。 它使您的代码令人愉快和可读这样的东西 _.isString// 和 _.isArray//. 我不太确定如何否则如何编写安全代码。 此外,对于延长 command-line-fu 看看我自己的
https://github.com/ddopson/underscore-cli
.

模块异步模板:

https://github.com/creationix/step
- 表达连续和并行行动的组合的非常优雅的方法。 我的个人推荐。 看
https://coderoad.ru/5989538/
关于步骤代码如何看起来像。

https://github.com/coolaj86/futures
- 更灵活 /真的很好吗?/ 通过要求表达订单的方法。 可以表达类似的东西 "让我们开始,B, c 平行线。 什么时候 A 和 B 完成,开始 AB. 什么时候 A 和 C 结束,开始 AC."这种灵活性需要更大的警告以避免工作流程中的错误。 /例如,永远不会造成回调或称之为多次。/. 厘米
https://coderoad.ru/5989538/
Riosa关于使用期货 /这是一条让我的消息 "get" 期货/.

https://github.com/caolan/async
- 一个更传统的库,具有每个模板的一种方法。 我从这开始到我的宗教吸引力 step 随后的实现,即可以表达所有异步模式 Step 借助一个更可读的范式。

http://tamejs.org/
-书面 OKCupid, 这是一个添加新的语言最初的预编译器。 "await" 优雅的写作连续和并行工作流程。 模板看起来很惊人,但它需要预编码。 我仍然决定这个问题。

https://github.com/Sage/streamlinejs
-Curcurrent. TameJS. 我倾向于驯服,但你可以解决自己。

或者阅读关于异步库的一切,看
http://www.infoq.com/articles/ ... cript
与作者。

Web框架:

https://github.com/visionmedia/express
Great Ruby on Rails-esk framework 组织网站。 他用
http://jade-lang.com/
作为 XML/HTML 模板发动机制作建筑 HTML 更痛苦,甚至几乎优雅。

http://api.jquery.com/category/selectors/
虽然从技术上而不是节点模块, jQuery 快速成为客户端用户界面的事实标准。 jQuery 提供类似CSS的选择器 'query' 对于一组元素 DOM, 然后可以使用 /设置处理程序,属性,样式等。/. 在同样的原则上,Twitter是
http://twitter.github.com/bootstrap/
CSS framework,
http://documentcloud.github.com/backbone/
对于模板 MVC 和
https://github.com/substack/node-browserify
缝制你的所有文件 JavaScript 在一个文件中。 所有这些模块都成为实际标准,因此如果您没有听说过他们,则至少必须检查它们。

测试:

http://github.com/jshint/node-jshint
- 所有使用; 我现在没有用它现在似乎难以理解。 JSLint 在编译的语言的帮助下,添加了一堆基本检查,例如 Java. 未交断的括号,未释放的变量,各种形状和尺寸的类型。 您还可以包含我所说的各种形式 "anal mode", 检查风格的地方 whitespace 所有这些都是什么 OK, 如果这是你的一杯茶 , 但实际价值是接收关于您忘记关闭的正数的即时反馈"/" ... 没有必要运行代码并进入一个令人反感的字符串。 "JSHint" - 这是一个更可定制的选项。 JSLint

http://www.jslint.com/
http://visionmedia.github.com/mocha/
- 我开始偏好的当前誓言。 这两个框架都与基础知识合作,但复杂的模式通常在Moko中表达更容易。

http://vowsjs.org/
- 真的很优雅。 他打印了一个很棒的报道。 /--spec/, 向您展示哪些测试用例通过 / 没过。 花费 30 要研究它的分钟,您可以以最少的努力为模块创建基本测试。

https://github.com/assaf/zombie
- 排序测试 HTML 和 JavaScript 使用 JSDom
https://github.com/tmpvar/jsdom/
作为虚拟 "browser". 非常强大的事情。 结合他的S.
https://github.com/assaf/node-replay#readme
, 为了获得闪电,浏览器中的确定性代码测试。

评论如何 "think about" 测试:

测试不是强制性的。 具有动态语言,如 JavaScript, 静态检查

高度

很少。 例如,使用预期的方法传输两个参数 4, 在执行代码之前,它不会中断。 相当低的木板,创造错误 JavaScript. 必要的基本测试以编译语言补充测试空间。

忘记检查,只是这样做,以便执行代码。 对于每种方法,我的第一个检查案例是 "没有什么突破", 这是最常用的情况。 证明您的代码在没有弹出的情况下工作 80% 错误将为提高您将返回的代码的信心提高,并添加您错过的扫描细微差别。

从一个小并打破惯性障碍。 我们都懒惰,我们缺乏时间,易于看到测试 "extra work". 所以从小开始。 写一个测试案例0-下载模块并报告成功执行。 如果您自己这样做,那么测试的惯性屏障将被打破。 它 <30 Min首次执行此操作,包括阅读文档。 现在写一个测试用例1 - 调用其中一个方法并确保 "没有什么突破", 也就是说,你没有收到错误。 测试用例 1 必须带你不到一分钟。 随着惯性的消失,很容易逐步扩大测试的覆盖范围。

现在使用您的代码开发您的测试。 不要害怕测试的样子 "correct" end-to-end 与虚构的服务器和所有这些。 代码开始简单并开发以处理新案例; 测试也应该。 随着新案例添加并复杂化代码,添加测试用例以执行新代码。 检测错误时,添加检查和 / 或新案例涵盖缺陷的代码。 当您执行调试并失去代码片段中的信心时,请返回并添加测试以证明它确实是您的想法。 捕获数据示例字符串 /从您拨打的其他服务,您清洁任何内容的网站/ 并将其传递给您的语法分析代码。 这里有一些案例,改进了检查,您将获得一个高度可靠的代码。


另外,阅读
http://nodejs.org/docs/v0.4.11/api/appendix_1.html
推荐的模块 Node.js. 但
http://en.wikipedia.org/wiki/GitHub
这是一个更完整和良好的资源。

理解 Node, 考虑几个关键设计选项有用。

:

Node.js

基于事件



ASYNCHRONOUS

/

解锁

. 传入连接等事件 HTTP, 运行该功能 JavaScript, 这执行了一项小型作业并运行其他异步任务,例如连接到数据库或从另一个服务器检索内容。 一旦这些任务已经运行,事件函数已完成,并且 Node.js 再次交换到睡眠模式。 例如,一旦发生了其他东西,例如,与数据库或外部服务器的连接对应于内容,则触发回调特征,并且执行更多代码。 JavaScript, 潜在地推出更多异步任务 /例如,数据库请求/. 因此, Node.js 对于若干并行工作流程,它将是备用操作,执行任何时间将被解锁的任何操作。 这就是为什么 Node.js 它与数千个同时连接的管理很好。

为什么不只是使用一个过程/每次连接流,其他人怎么样?

在 Node.js 新连接 - 这只是堆的一个非常小的分配。 新进程的启动显着增加了一些平台上的内存,兆字节。 但实际成本是与切换上下文相关的开销成本。 当你有 10^6 kernel 溪流 kernel 必须做很多工作,发现谁应该执行下一个。 在创建调度程序时花了很多工作 O/1/ 为了 Linux, 但最终,拥有一个由事件管理的过程比这更有效 10^6 流程竞争 CPU 时间。 此外,在拥堵条件下,多处理模型表现得非常严重,剥夺了关键管理和管理服务,特别是 SSHD /这意味着您甚至无法进入框以了解它如何拧紧/.

Node.js

单一职业

没有

城堡

. Node.js, 由于一个非常周到的设计选择只有一个流程进程。因此,几个流可以从根本上同时访问数据。因此,不需要锁定。线程非常艰难。非常非常努力。如果您不相信它,这意味着您尚未参与流式编程。很难得到正确的阻塞,这导致错误真正难以跟踪。消除锁和多线程使最恶心的错误类之一只会消失。这可能是唯一最大的优势 node.

但我如何使用第16届核盒?

两种方式:

对于大型沉重计算任务,例如图像编码, Node.js 可以运行子进程或向其他工作流发送消息。 在这个项目中,您将拥有一个控制事件流程的流 N 流程执行严重计算任务和其他 15 CPUs.

要在Web服务上缩放带宽,必须启动多个服务器 Node.js 在一个块上,一个在内核,使用
http://nodejs.org/api/cluster.html
/从 Node.js v0.6.x 官方模块 "cluster", 在此连接,替换版本 learnboost, 那有另一个 API/. 这些本地服务器 Node.js 然后可以在套接字上竞争以通过平衡它们的负载来进行新的连接。 一旦接受连接,它就与这些常见过程中的一个密切相关。 从理论上讲,听起来很糟糕,但在实践中,它很好地工作,允许您在编写线程安全代码时避免头痛。 此外,这意味着 Node.js 与缓存变得非常好 CPU, 更有效地使用内存带宽。


Node.js 让你在没有令人不安的汗水的情况下做一些非常强大的事情。

假设你有一个程序 Node.js, 它执行各种任务,侦听命令
http://en.wikipedia.org/wiki/T ... tocol
港口 TCP, 在五行代码的帮助下编码某些图像等,您可以基于的Web控制门户添加 HTTP, 显示当前的活动任务状态。 它 EASY, 要做:


var http = require/'http'/;
http.createServer/function /req, res/ {
res.writeHead/200, {'Content-Type': 'text/plain'}/;
res.end/myJavascriptObject.getSomeStatusInfo///;
}/.listen/1337, "127.0.0.1"/;


现在您可以单击按钮。 URL 并检查运行进程的状态。 添加多个按钮,您将收到 "management portal". 如果你有跑步 Perl / Python / Ruby 场景,简单 "throwing in a management portal" 不太简单。

但不是 JavaScript 不慢 / 坏的 / 邪恶的 / spawn-of-the-devil?

JavaScript 有一些奇怪的怪物,但有 "the good parts" 有一种非常强大的语言,在任何情况下,JavaScript都是一种语言 THE 在客户上 /浏览器/. JavaScript 在这里停留; 其他语言针对他 IL, 世界一流的人才竞争最先进的发动机的生产 JavaScript. 因为角色 JavaScript 在浏览器中,抛出了大量的工程努力 JavaScript 非常快。
http://en.wikipedia.org/wiki/V ... %2529
- 这是最新和最大的发动机 javascript, 至少本月。 它以效率吹出其他脚本语言 AND, 在稳定性上 /看着你 Ruby/. 它只会改善巨大的团队在努力解决问题 Microsoft, Google 和 Mozilla, 竞争创建更好的发动机 JavaScript /这不再是 JavaScript "interpreter", 所有现代引擎如何制造大量汇编 JIT 在引擎盖下,仅作为代码的备用选项 execute-once/. 是的,我们都希望解决一些更奇怪的语言选项。 JavaScript, 但这真的不是那么糟糕。 而且语言是如此诅咒,你真的不编码 JavaScript, 你编码 Step 或者 jQuery - 不仅仅是任何其他语言 JavaScript 图书馆确定经验。 要创建Web应用程序,您必须大力了解 JavaScript 在任何情况下,因此在服务器上编码它具有技能的一种协同作用。 它让我不害怕写客户代码。

另外,如果你 REALLY 恨 JavaScript, 您可以使用语法糖,例如
http://jashkenas.github.com/coffee-script/
. 或其他创建代码的其他东西 JavaScript, 例如
http://code.google.com/webtoolkit/
/GWT/.

顺便问一下O. JavaScript, 是什么 "closure"?

- 一个非常安静的方式,说你在呼叫链中保存词汇限定的变量。 ;/ 像这样:


var myData = "foo";
database.connect/ 'user:pass', function myCallback/ result / {
database.query/"SELECT * from Foo where id = " + myData/;
} /;
// Note that doSomethingElse// executes _BEFORE_ "database.query" which is inside a callback
doSomethingElse//;


看看你是如何使用的 "myData", 例如,不管任何不方便的东西,没有隐藏到物体中? 和不像 Java, 多变的 "myData" 它不应该只读。 这种强大的语言功能使异步编程减少更加冗长,更痛苦。

编写异步代码总是比写简单的单线程方案更困难,但是 Node.js 这不是那么困难,除了数千个并行连接的效率和可扩展性之外,您还获得了许多优点......

知食

赞同来自:

我认为福利如下:

动态语言的Web开发 /JavaScript/ 在 VM, 这是令人难以置信的快 /V8/. 它比它快得多 Ruby, Python 或者 Perl.

能够以最小的每个过程处理数千个并联连接。

JavaScript 适用于具有第一类功能的活动周期和 closures. 人们已经知道如何以这种方式使用它在浏览器中以响应用户启动的事件。

许多人已经知道了 JavaScript, 即使是那些不假装的人的程序员等级。 这也许是最受欢迎的编程语言。

使用 JavaScript 在Web服务器以及浏览器中,减少两个可以通过的两个编程环境之间的阻抗不一致 JSON, 这同样在等式的两侧工作。 可以在服务器和客户端等之间共享重复表单检查代码。

龙天

赞同来自:

http://en.wikipedia.org/wiki/V ... %2529
- 这是该函数的实现 JavaScript. 它允许您脱机应用程序运行 JavaScript /除其他事项外/.

node.js只是写作的图书馆 V8, 这是什么 evented I/O. 这个概念有点难以解释,我相信某人会用最好的解释来回答,而不是我......而不是做一些进入或输出并等待它发生时,你只是

不是

我们在等待它。 例如,请求文件上次编辑的时间:


// Pseudo code
stat/ 'somefile' /


它可能需要几毫秒,也许是几秒钟。 从 evented
http://en.wikipedia.org/wiki/Input/output
您只需运行请求,而不是等待您,在请求结束时,附上运行的回调:


// Pseudo code
stat/ 'somefile', function/ result / {
// Use the result here
} /;
// ...more code here


它使它与代码非常相似 JavaScript 在浏览器中 /例如,具有样式功能
http://en.wikipedia.org/wiki/A ... %2529
/.

有关更多信息,您必须检查文章
http://simonwillison.net/2009/Nov/23/node/
, 这是我的介绍 library/platform... 我发现它相当不错。

小姐请别说爱

赞同来自:

http://nodejs.org/
- 这是为代码创建的开源命令行工具。 JavaScript 在服务器端。 你可以下载
http://en.wikipedia.org/wiki/Tarball
, 编译和安装源代码。 它允许您运行 JavaScript 程式。

JavaScript 执行
http://code.google.com/p/v8/
, 引擎 JavaScript, 设计 Google, 哪个用于浏览器
http://en.wikipedia.org/wiki/Google_Chrome
. 他用 JavaScript API 访问网络和文件系统。

它很受欢迎,其生产力和执行并行操作的能力。

http://debuggable.com/posts/un ... d56cb
- 这是最好的解释 node.js,
http://nodejs.org/
到目前为止我发现了。

以下是关于这一主题的一些好文章。

http://net.tutsplus.com/tutori ... e-js/
http://net.tutsplus.com/tutori ... e-js/

卫东

赞同来自:

closures - 这是在创建它的上下文中执行代码的方法。

对于并行性,这意味着您可以定义变量,然后启动非阻塞功能
http://en.wikipedia.org/wiki/Input/output
- 为其回调提供并发送匿名功能。

任务完成后,将在包含变量的上下文中执行回调函数,这是关闭。

原因 closures 如此善于编写具有非阻塞输入 - 结论的应用程序是非常容易控制异步运行函数的上下文。

小姐请别说爱

赞同来自:

两个良好的例子涉及如何管理模板并使用逐行改进。 你只需要几张灯。 JavaScript, 让它完美地工作。

我强烈建议您查看和阅读这些文章:

http://www.yuiblog.com/blog/20 ... node/
http://www.yuiblog.com/blog/20 ... h-my/
采用任何语言并尝试记住如何控制文件模板 HTML 以及您需要做什么来更新一个类名称
http://en.wikipedia.org/wiki/C ... heets
在你的结构中
http://en.wikipedia.org/wiki/Document_Object_Model
/例如,用户按下菜单项,并且您希望将其标记为 "selected" 并更新页面内容/.

从 Node.js 在客户端代码中,它同样简单 JavaScript. 得到你的结 DOM 并将您的课程应用于它 CSS. 得到你的结 DOM 和 innerHTML 你的内容 /为此,您需要一个额外的代码。 JavaScript. 阅读文章以了解更多信息/.

另一个很好的例子是您可以使您的网页兼容 JavaScript, 使用相同的代码片段启用或禁用。 想象一下,你有一个日期选择 JavaScript, 这将允许您的用户使用日历选择任何日期。 你可以写 /或者使用/ 相同的代码片段 JavaScript, 让它与您的工作 JavaScript, ON 或者 OFF.

石油百科

赞同来自:

与最佳食品网站有一个非常好的类比,最能解释事件模型。 Node.js, 查看完整的文章,
http://code.danyork.com/2011/0 ... ming/
这是一个摘要:

如果快餐店按照基于线程的传统模式,您将有订购食物,并在队列中等待,直到你得到它。 在执行订单时,一个人站立的人将无法进行订单。 在由事件管理的模型中,您订购食物,然后留下队列等待。 所有其他人都可以自由订购。

Node.js 由事件管理,但大多数Web服务器都是基于流的.York解释了它是如何工作的 Node.js:

您使用Web浏览器提出请求 "/about.html " 到服务器
Node.js 网络服务器。

服务器 Node.js 请求您的请求并导致函数接收
来自磁盘的此文件。

虽然服务器 Node.js 预计文件收据,他
服务以下Web请求。

检索文件时,存在回调函数
插入服务器的队列 Node.js.

服务器 Node.js 执行在这种情况下的功能
可视化页面 "/about.html " 并将其发送回您的Web浏览器。"

莫问

赞同来自:

好吧
http://nodejs.org/#about

目的 Node 它是提供一种简单的方法
构建可扩展的网络程序。

该节点在设计中类似的设计并影响如事件机器的系统 Ruby 或扭曲 Python.

Evented I/O 为了 V8 javascript.

对我来说,这意味着你在三个假设中是正确的。 图书馆肯定看起来很有希望!

小姐请别说爱

赞同来自:

另外,不要忘记提到这一点 V8 经过 Google 是一个 VERY 快速地。 它实际上转换了代码 JavaScript 在机器代码中,编译的二进制文件的一致性。 所以,以及所有其他伟大的事物,它是 INSANELY 快速地。

喜特乐

赞同来自:

Q: 软件模型由事件控制,尤其是如何流程
http://en.wikipedia.org/wiki/Input/output
.

正确的。 它使用回调,因此访问文件系统的任何请求将请求向文件系统发送请求 Node.js 开始处理下一个查询。 只有担心I / O请求,一旦从文件系统的响应,此时它将执行回调码。 但是,您可以进行同步I / O请求 /这是阻止请求/. 开发人员必须在异步之间进行选择 /打回来/ 或同步 /期待/.

Q: 他用 JavaScript, 语法分析仪-V8。

是的

Q: 它可以轻松用于创建并行服务器应用程序。

是的,虽然你必须手动编码很多 JavaScript. 也许看看框架更好,如
http://www.easynodejs.com/
- 附带完整的在线文档和示例应用程序。

要回复问题请先登录注册