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

相关推荐
Mr_li5 小时前
NestJS 集成 TypeORM 的最优解
node.js·nestjs
UIUV7 小时前
node:child_process spawn 模块学习笔记
javascript·后端·node.js
前端付豪1 天前
Nest 项目小实践之注册登陆
前端·node.js·nestjs
天蓝色的鱼鱼1 天前
Node.js 中间层退潮:从“前端救星”到“成本噩梦”
前端·架构·node.js
codingWhat1 天前
uniapp 多地区、多平台、多环境打包方案
前端·架构·node.js
小p1 天前
nodejs学习: 服务器资源CPU、内存、硬盘
node.js
Mr_li2 天前
手摸手,教你如何优雅的书写 NestJS 服务配置
node.js·nestjs
QQ5110082852 天前
python+springboot+django/flask的校园资料分享系统
spring boot·python·django·flask·node.js·php
q***09802 天前
最新最详细的配置Node.js环境教程
node.js
WeiXin_DZbishe2 天前
基于django在线音乐数据采集的设计与实现-计算机毕设 附源码 22647
javascript·spring boot·mysql·django·node.js·php·html5