Node.js 是否仅适用于网站?我已经阅读了可以在 Node.js 中完成的完整复杂的 Web 服务器,然后是许多优秀的 Web 应用程序。但我也看到有人为游戏制作了 UDP 机器人。这让我问,Node.js 不仅可以用于网站吗?
3 回答
Node.js 可用于许多通用项目,包括命令行实用程序、您提到的机器人等。Node 尤其擅长处理大量 I/O,因为它使用非阻塞 I/O 机制。虽然这包括许多 Web 应用程序,但它可以包括任何花费大量时间等待磁盘或网络访问的东西。例如,用于游戏的 UDP 机器人可能大部分时间都在接收有关玩家位置等网络数据。
值得注意的是,尽管 I/O 本身是非阻塞的,但您实际使用 Node 编写和执行的 JavaScript 代码只发生在单个线程中,这使得 Node.js 不太适合某些类型的应用程序(很多数据处理、模拟等)。有一些方法可以处理这些限制,例如生成子进程,但最好了解这些限制。
它只是一个恰好使用 JavaScript 作为其语言的服务器端引擎。它有普通的标准库,几乎可以做任何其他支持事件循环的编程语言和用于 i/o、网络访问等的标准库可以做的任何事情。
所以不,不是,但这肯定是大多数人使用的东西(就像不需要使用 Perl 或 PHP 来生成 Web 内容一样)
Node.js 有一个活跃的社区,为许多用例制作各种各样的模块。查看核心 API可以很好地了解那里有哪些较低级别的构建块,搜索NPM可以深入了解社区如何利用它们。
鉴于 Node.js 专注于基于事件的 I/O,我会说它在(惊喜)有要处理的事件时表现最好——Web 应用程序就是一个很好的例子。最近也有很多关于 Node.js 与硬件的讨论,它通常可以遵循类似的异步事件模式。如果您对“Nodebots”感兴趣,Johnny-Five 库值得一看。
不过东西很多!voxel.js是我目前最喜欢的项目之一,它依赖于为浏览器打包并在客户端运行的 Node.js 代码。
Node.js 绝对不仅仅可以用于网站,但肯定有些项目更符合它的功能。