Node.js教程:新手入门
1,新手入门
# 1,新手入门 ### 1.1 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 //创建web服务器 const http = require('http'); //首先包含 Node.js http 模块 const hostname = '127.0.0.1'; const port = 3000; const server = http.createServer((req, res) => { //http 的 createServer() 方法创建一个新的 HTTP 服务器并返回它 res.statusCode = 200; //我们将 statusCode 属性设置为 200,表示响应成功 res.setHeader('Content-Type', 'text/plain'); //设置 Content-Type 标头 res.end('Hello World\n'); //我们关闭响应,将内容作为参数添加到 end() }); server.listen(port, hostname, () => { //服务器设置为监听指定的端口和主机名 console.log(`Server running at http://${hostname}:${port}/`); }); 要运行此代码段,请将其保存为 server.js 文件并在终端中运行 node server.js。 ``` ### 1.2 **Node.js安装** https://nodejs.cn/download/ ### 1.3 **Node.js 和浏览器之间的区别** 构建在浏览器中运行的应用与构建 Node.js 应用完全不同。 另一个很大的区别是在 Node.js 中你可以控制环境。 另一个区别是 Node.js 同时支持 CommonJS 和 ES 模块系统(自 Node.js v12 起),而在浏览器中我们开始看到正在实现的 ES 模块标准。这意味着你可以在 Node.js 中同时使用 `require()` 和 `import`,而在浏览器中只能使用 `import`。 ### 1.4 V8 JavaScript 引擎 8 是为 Google Chrome 提供支持的 JavaScript 引擎的名称。 它是获取我们的 JavaScript 并在使用 Chrome 浏览时执行它的东西。 V8 是 JavaScript 引擎,即它解析和执行 JavaScript 代码。 DOM 和其他 Web 平台 API(它们都构成运行时环境)由浏览器提供。 很酷的是 JavaScript 引擎独立于托管它的浏览器。 这个关键特性促成了 Node.js 的兴起。 JavaScript 通常被认为是一种解释型语言,但现代 JavaScript 引擎不再只是解释 JavaScript,而是编译它。 JavaScript 由 V8 内部使用 **即时** (JIT) **编译** 编译以加快执行速度。 ### 1.5 NPM 包管理器简介 > `npm` 是 Node.js 的标准包管理器。[Yarn](https://yarn.nodejs.cn/en/) 和 [pnpm](https://pnpm.nodejs.cn/) 是 npm cli 的替代品。 - 安装所有依赖 ```bash #如果一个项目有一个 `package.json` 文件,通过该命令,它将在 `node_modules` 文件夹中安装项目所需的所有内容,不存在则创建 npm install #安装所有包 npm install <package-name> #安装单个包 ``` - 更新包 ```bash npm update #更新所有个包 npm update <package-name> #更新单个包 ``` - 版本控制 ```bash #安装特定版本的软件包,通过运行 npm install <package-name>@<version> ``` - 运行任务 ```bash #package.json 文件支持指定命令行任务的格式,可以使用 npm run <task-name> ``` ```json { "scripts": { "start-dev": "node lib/server-development", "start": "node lib/server-production" } } ``` ```json { "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" } } ``` ```bash $ npm run watch $ npm run dev $ npm run prod ``` ### 1.6 Node.js 中开发和生产 > Node.js 假定它始终在开发环境中运行。 你可以通过设置 `NODE_ENV=production` 环境变量向 Node.js 发送你正在生产环境中运行的信号。 > > 将环境设置为 `production` 通常可以确保:日志记录保持在最低限度,基本水平;更多缓存级别发生以优化性能。 - 通过执行命令来完成 ```bash #在 shell 中 export NODE_ENV=production #但最好将它放在你的 shell 配置文件中(例如 Bash shell 的 .bash_profile),否则设置在系统重启时不会保留 ``` - 将环境变量添加到应用初始化命令中来应用环境变量 ```bash NODE_ENV=production node app.js #此环境变量是一种在外部库中也广泛使用的约定 ``` - 可以使用条件语句在不同环境中执行代码 ```javascript if (process.env.NODE_ENV === 'development') { // ... } if (process.env.NODE_ENV === 'production') { //... } if (['production', 'staging'].includes(process.env.NODE_ENV)) { // ... } //为每个环境设置不同的错误处理程序 if (process.env.NODE_ENV === 'development') { app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); } if (process.env.NODE_ENV === 'production') { app.use(express.errorHandler()); } ``` ### 1.7 使用 TypeScript 的 Node.js - 如何运行 ```bash #在我们的项目中安装 TypeScript** npm i -D typescript #编译 npx tsc example.ts #npx 是 Node Package Execute 的缩写。 这个工具允许我们运行 TypeScript 的编译器而无需全局安装它 #tsc 是 TypeScript 编译器,它将获取我们的 TypeScript 代码并将其编译为 JavaScript。 ``` - 使用 TypeScript 的一些著名的开源项目 > [NestJS](https://nest.nodejs.cn/) - 强大且功能齐全的框架,使创建可扩展且架构良好的系统变得轻松愉快 > > [TypeORM](https://typeorm.io/#/) - 很棒的 ORM 受到来自其他语言(如 Hibernate、Doctrine 或 Entity Framework)的其他知名工具的影响 > > [Prisma](https://prisma.io/) - 具有声明性数据模型、生成的迁移和完全类型安全的数据库查询的下一代 ORM > > [RxJS](https://rx.nodejs.cn/) - 广泛用于响应式编程的库 > > [AdonisJS](https://adonisjs.com/) - 使用 Node.js 的功能齐全的 Web 框架 > > [FoalTs](https://foalts.org/) - 优雅的 Nodejs 框架
顶部
收展
底部
[TOC]
目录
1,新手入门
2,异步工作
3,文件操作
4,命令行
5,yarn 依赖管理
相关推荐
Node.js接口
Node.js:ExpressWeb
朴灵《深入浅出 Node.js》