Node.js 新手教程

1、nodejs简介

Node.js 是一个开源和跨平台的 JavaScript 运行时环境。它是几乎所有类型项目的流行工具!

Node.js 在浏览器之外运行 V8 JavaScript 引擎(Google Chrome 的核心)。这使得 Node.js 的性能非常出色。

Node.js 应用程序在单个进程中运行,无需为每个请求创建新线程。Node.js 在其标准库中提供了一组异步 I/O 原语,可防止 JavaScript 代码阻塞,并且通常,Node.js 中的库是使用非阻塞范例编写的,这使得阻塞行为成为例外而不是常态。

当 Node.js 执行 I/O 操作(如从网络读取、访问数据库或文件系统)时,Node.js 不会阻塞线程并浪费 CPU 周期等待,而是会在响应返回时恢复操作。

这使得 Node.js 能够使用单个服务器处理数千个并发连接,而不会引入管理线程并发的负担,而这可能是一个重要的错误来源。

Node.js 具有独特的优势,因为数百万为浏览器编写 JavaScript 的前端开发人员现在除了能够编写客户端代码之外,还能编写服务器端代码,而无需学习完全不同的语言。

在 Node.js 中,可以毫无问题地使用新的 ECMAScript 标准,因为您不必等待所有用户更新他们的浏览器 - 您可以通过更改 Node.js 版本来决定使用哪个 ECMAScript 版本,并且您还可以通过使用标志运行 Node.js 来启用特定的实验性功能。

Node.js 是一个开源和跨平台的 JavaScript 运行时环境。它是几乎所有类型项目的流行工具!

Node.js 在浏览器之外运行 V8 JavaScript 引擎(Google Chrome 的核心)。这使得 Node.js 的性能非常出色。

Node.js 应用程序在单个进程中运行,无需为每个请求创建新线程。Node.js 在其标准库中提供了一组异步 I/O 原语,可防止 JavaScript 代码阻塞,并且通常,Node.js 中的库是使用非阻塞范例编写的,这使得阻塞行为成为例外而不是常态。

当 Node.js 执行 I/O 操作(如从网络读取、访问数据库或文件系统)时,Node.js 不会阻塞线程并浪费 CPU 周期等待,而是会在响应返回时恢复操作。

这使得 Node.js 能够使用单个服务器处理数千个并发连接,而不会引入管理线程并发的负担,而这可能是一个重要的错误来源。

Node.js 具有独特的优势,因为数百万为浏览器编写 JavaScript 的前端开发人员现在除了能够编写客户端代码之外,还能编写服务器端代码,而无需学习完全不同的语言。

在 Node.js 中,可以毫无问题地使用新的 ECMAScript 标准,因为您不必等待所有用户更新他们的浏览器 - 您可以通过更改 Node.js 版本来决定使用哪个 ECMAScript 版本,并且您还可以通过使用标志运行 Node.js 来启用特定的实验性功能。

2、nodejs安装

建议通过包管理器安装,推荐NVM

3、Node.js 和浏览器之间的区别

浏览器和 Node.js 都使用 JavaScript 作为编程语言。构建在浏览器中运行的应用程序与构建 Node.js 应用程序完全不同。尽管它们始终都是 JavaScript,但仍存在一些关键差异,这些差异使体验截然不同。

从广泛使用 JavaScript 的前端开发人员的角度来看,Node.js 应用程序具有巨大的优势:使用一种语言就可以舒适地编写所有内容(前端和后端)。

在浏览器中,您大部分时间都在与 DOM 或其他 Web 平台 API(如 Cookies)进行交互。当然,这些在 Node.js 中并不存在。您没有document以及window浏览器提供的所有其他对象。

而在浏览器中,我们没有 Node.js 通过其模块提供的所有优良 API,例如文件系统访问功能。

另一个很大的区别是,在 Node.js 中,您可以控制环境。除非您正在构建任何人都可以部署到任何地方的开源应用程序,否则您知道将在哪个版本的 Node.js 上运行该应用程序。与浏览器环境相比,您无法选择访问者将使用哪种浏览器,这非常方便。

这意味着您可以编写 Node.js 版本支持的所有现代 ES2015+ JavaScript。由于 JavaScript 更新换代很快,但浏览器的升级速度却有点慢,因此有时在网络上您只能使用较旧的 JavaScript / ECMAScript 版本。您可以使用 Babel 将代码转换为与 ES5 兼容的代码,然后再将其发送到浏览器,但在 Node.js 中,您不需要这样做。

另一个区别是 Node.js 同时支持 CommonJS 和 ES 模块系统(自 Node.js v12 起),而在浏览器中,我们开始看到 ES 模块标准正在实施。

4、npm 包管理器简介

npm是 Node.js 的标准包管理器。

安装所有依赖项

php 复制代码
npm install

安装单个包

php 复制代码
npm install <package-name>

更新软件包

php 复制代码
npm update

更新单个包

php 复制代码
npm update <package-name>

安装软件包的特定版本

php 复制代码
npm install <package-name>@<version>

运行任务

php 复制代码
npm run <task-name>

例如:

php 复制代码
{
  "scripts": {
    "start-dev": "node lib/server-development",
    "start": "node lib/server-production"
  }
}

使用此功能运行 Webpack :

php 复制代码
{
  "scripts": {
    "watch": "webpack --watch --progress --colors --config webpack.conf.js",
    "dev": "webpack --progress --colors --config webpack.conf.js",
    "prod": "NODE_ENV=production webpack -p --config webpack.conf.js"
  }
}

因此,您无需输入那些容易忘记或输错的长命令,而是可以运行

php 复制代码
$ npm run watch
$ npm run dev
$ npm run prod

注:具体请看官方文档 https://nodejs.org/zh-cn/learn/getting-started/introduction-to-nodejs

相关推荐
未来之窗软件服务1 小时前
声音分离人声和配乐-从头设计数字生命第5课, demucs——仙盟创梦IDE
ide·macos·xcode·仙盟创梦ide·数字生命
名字越长技术越强12 小时前
Node.js学习
学习·node.js
我该如何取个名字12 小时前
Mac mini 安装mysql数据库以及出现的一些问题的解决方案
数据库·mysql·macos
知识分享小能手14 小时前
JavaScript学习教程,从入门到精通,Ajax与Node.js Web服务器开发全面指南(24)
开发语言·前端·javascript·学习·ajax·node.js·html5
dwqqw16 小时前
opencv图像库编程
前端·webpack·node.js
ttumetai16 小时前
MacOS中安装Python(homebrew,pyenv)
python·macos
layman052817 小时前
node.js 实战——(fs模块 知识点学习)
javascript·node.js
本本啊18 小时前
node 启动本地应用程序并设置窗口大小和屏幕显示位置
前端·node.js
全栈派森19 小时前
Next15 + Prisma + Auth5 实战讲解
react.js·node.js·next.js
·薯条大王19 小时前
Node.js 开发用户登录功能(使用mysql实现)
数据库·mysql·node.js