Node.js在事件循环(初始化和回调)中运行JavaScript代码,并提供一个工作池来处理像文件I/O这样的昂贵任务。
节点伸缩性好,有时比像Apache这样的重量级方法要好。
Node的可伸缩性的秘密在于它使用少量的线程来处理许多客户机。
如果Node可以使用更少的线程,那么它可以花费更多的系统时间和内存来处理客户机,而不是为线程(内存、上下文切换)支付空间和时间开销。
但是因为Node只有几个线程,所以您必须组织应用程序来明智地使用它们。
这里有一个很好的经验法则,可以让您的节点服务器速度更快:节点在任何给定时间与每个客户机相关联的工作是“小”的。
JavaScript 本身不能直接与数据库交互,但在 Web 应用程序中,可以使用 JavaScript 操作数据库。
通常情况下,JavaScript 通过 AJAX 请求从服务器获取数据,然后将数据呈现给用户。
在服务器端,可以使用 Node.js 运行 JavaScript 代码,并使用 Node.js 提供的模块来连接数据库。
例如,可以使用 mysql
模块来连接 MySQL 数据库,或使用 mongodb
模块来连接 MongoDB 数据库。
以下是一个使用 Node.js 和 MySQL 进行数据库操作的例子:
Event Loop 可以让 Node.js 实现非阻塞的 IO 操作,尽管 Node.js 本身是单线程的。
Node.js 通过将自身的操作卸载到操作系统中,现在的操作系统大多数是多核的,
可以再后台处理多个操作,并且当操作完成之后,会在合适的时间通知 Node.js,让 Node.js 拿到真正的执行结果。
Event Loop 解释
Node.js 启动时,开始初始化 Event Loop,用来执行输入的脚本。可以调用异步 Api,定时 Timers 或者执行 process.nextTick()
,
是在节点中执行额外的JavaScript时。js进程必须等待非javascript操作完成。这是因为在发生阻塞操作时,事件循环无法继续运行JavaScript。
在 Node.js,由于CPU密集型而不是等待非JavaScript操作(比如I/O)而表现不佳的JavaScript,通常不被称为阻塞。
节点中的同步方法。使用 libuv 的js标准库是最常用的阻塞操作。本机模块也可能有阻塞方法。
NPM 是 node.js 的一种包管理工具。
作用:
-
允许用户从NPM服务器下载别人编写的第三方包到本地使用
-
允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用
-
允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用
版本
查看
$ npm -v
5.6.0
Q: 详细介绍一下 nodejs
Node.js 是一个开源、跨平台的JavaScript运行时环境,它允许开发者在服务器端运行JavaScript代码。Node.js 是基于Chrome V8 JavaScript引擎构建的,它的设计目标是提供一种高效、轻量级的方式来构建可扩展的网络应用程序。
以下是Node.js的一些关键特性和概念:
-
异步和事件驱动:Node.js 的大部分API都是异步的,即非阻塞的。这意味着Node.js基于事件循环机制,可以在执行I/O操作(如读写文件、数据库查询、网络请求等)时不被阻塞,从而使得Node.js非常适合处理大量并发连接。
-
单线程:尽管JavaScript在Node.js中是单线程执行的,但是通过事件循环和回调函数,Node.js可以处理大量并发,而不会因为线程创建和销毁的开销而降低性能。
-
npm:Node.js 附带了一个名为npm(Node Package Manager)的包管理器,它是世界上最大的开源库生态系统。开发者可以使用npm来安装、共享和管理依赖库。
-
模块系统:Node.js 有一个模块化的结构,使用CommonJS模块系统。每个模块都是一个单独的文件,可以导出对象、函数、变量等供其他模块使用。
-
网络支持:Node.js 提供了强大的网络支持,包括HTTP、TCP、UDP、DNS和TLS/SSL等,使其成为开发各种网络应用的理想选择。
-
跨平台:Node.js 可以在多个平台上运行,包括多种Unix变种、macOS、Windows等。
-
Buffer和Stream:Node.js 提供了Buffer类来处理二进制数据,以及Stream接口来处理数据流。
-
社区驱动:Node.js 拥有一个活跃的开发者社区,不断地为其贡献新的模块和工具。
-
适用于构建多种应用:Node.js 不仅适用于Web服务器和网站应用,还适用于IoT、实时通信、命令行工具、网络服务等。
-
ES6+ 支持:Node.js 支持大部分现代JavaScript特性,包括ES6+(ECMAScript 2015及以后版本)的类、模块、箭头函数等。
-
安全性:Node.js 提供了一些内置的安全性特性,并且社区维护着许多专注于安全性的模块。
-
性能:由于Node.js使用V8引擎,它在性能上通常比传统的服务器端JavaScript环境更快。
Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.
Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient.
Node.js' package ecosystem, npm, is the largest ecosystem of open source libraries in the world.