浅谈 Node.js 与快速入门使用——前端开发工程师必须要知道的技术(文末送书福利6.0)

news2024/11/25 15:52:57

文章目录

  • 📋前言
  • 🎯什么是 Node.js
  • 🎯安装与使用 Node.js
    • 🧩直接安装 Node.js
    • 🧩使用 Node Version Manager(NVM)
    • 🧩使用 Node.js
  • 🎯Node.js 基础知识
    • 🧩模块系统
    • 🧩异步编程
    • 🧩HTTP 服务器
  • 📝最后
  • 🎯文末送书
    • 📚内容介绍
    • 📚作者介绍
  • 🔥参与方式


在这里插入图片描述

📋前言

当下,各行各业都面临着大数据、人工智能、AR(augmented reality,增强现实)、VR(virtual reality,虚拟现实)等各种互联网新技术的冲击。在此技术背景下,Web前端行业也发生了巨大的改变,前端程序员已从单纯的切图处理发展到了需要处理多种后端业务。其中,Node.js 就是连接前端和后端的一件利器。

准确地说,Node.js 是专门为前端工程师打造的运行环境,可以让 JavaScript 变成一门后端语言,实现后端接口开发。因此,Node.js 可以让前端工程师华丽转身,跨入全栈工程师的行列,拥有更多的技术优势。

这篇文章我们来浅谈下什么是 Node.js ,以及一些快速入门的必备知识点和简单案例。


🎯什么是 Node.js

Node.js 官方网站:https://nodejs.org
Node.js API 文档:https://nodejs.org/api

Node.js 是一个基于 V8 引擎的 JavaScript 运行环境,它让 JavaScript 脱离了浏览器的限制,能够在服务器端运行。Node.js 采用了非阻塞 I/O 和事件驱动的编程模型,使得它能够处理大量并发请求,同时保持高性能和高可扩展性。

Node.js 可以用于开发 Web 应用程序、API、实时应用程序、聊天服务器等等。它的优点包括:

  • 高性能:Node.js 采用了非阻塞 I/O 模型,使得它能够处理大量的并发请求,同时保持高性能和低延迟。
  • 可扩展性:Node.js 的单线程模型使得它能够轻松扩展成集群,也可以通过添加更多的服务器来扩展应用程序。
  • 跨平台:Node.js 支持各种操作系统,包括 Windows、Linux 和 MacOS 等。
  • 社区支持:Node.js 有一个庞大的社区,提供了大量的第三方模块和库,使得开发者可以更快速地开发应用程序。

在 Node.js 中,使用模块系统来组织代码,模块可以是 Node.js 自带的模块,也可以是开发者自定义的模块。Node.js 还提供了大量的内置模块,包括文件系统、网络、加密、流等等。对于没有内置支持的功能,可以通过安装第三方模块来实现。
在这里插入图片描述
除此之外,Node.js 还有很多重要的特性和概念,例如:

  • 回调函数:Node.js 采用了回调函数来处理异步操作的结果,它可以避免阻塞进程,提高应用程序的响应性能。
  • 事件驱动:在 Node.js 中,所有的 I/O 操作都是基于事件驱动的。当一个操作完成时,会触发相应的事件,开发者可以监听这些事件并做出响应。
  • Promise:除了回调函数外,Node.js 还支持使用 Promise 来处理异步操作的结果。Promise 是一种更为简洁、容易理解的异步编程模型。
  • :Node.js 的流是一种基于事件的抽象接口,使得数据能够以流的方式进行处理。流可以用于处理文件、网络传输等场景,可以提高应用程序的性能。

在这里插入图片描述
总的来说,Node.js 是一个强大的工具,用于构建高性能、可扩展的网络应用程序。它的特点包括非阻塞 I/O、事件驱动、模块化、跨平台等等,同时还有庞大的社区和丰富的生态系统。无论是初学者还是有经验的开发者,都可以在 Node.js 中找到适合自己的领域和机会。


🎯安装与使用 Node.js

在简单了解了什么是 Node.js 之后,我们来安装使用 Node.js。其实在学习 Vue 的时候已经安装过了,这里就不非常详细的描述了。

其实在安装 Node.js 时,有两种常用的方法:直接安装 Node.js 或使用 Node Version Manager(NVM)。接下来我们来一起看看这两种方法。

🧩直接安装 Node.js

❗注意:这里不详细说明更改环境变量的操作和修改全局模块下载路径 的操作了

  • 访问 Node.js 官方网站(https://nodejs.org)。
  • 在主页上选择适合你操作系统的版本(LTS 版本推荐),点击下载按钮进行下载。

在这里插入图片描述

  • 下载完毕后,运行安装程序并按照指示进行安装 (这里不详细介绍了,基本上是一直 next 到安装介绍,中途可能有更换安装路径)。
  • 在安装完成后,打开命令行终端,输入 node -v 命令,如果能够正确输出 Node.js 的版本号,则表示安装成功。

在这里插入图片描述

🧩使用 Node Version Manager(NVM)

NVM 是一个版本管理工具,可以安装和切换不同的 Node.js 版本。

  • 首先,从 NVM 的 GitHub 仓库(https://github.com/nvm-sh/nvm)上下载 NVM 的安装脚本。
  • 下载完毕后,根据你所使用的操作系统,在命令行中运行相应的安装脚本。例如,在 UNIX 或 macOS 系统上,你可以使用以下命令进行安装:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
  • 安装脚本运行完毕后,按照提示在你的 shell 配置文件(如 .bashrc、.bash_profile、.zshrc 等)中添加 NVM 的初始化代码,以便每次启动终端时都能加载 NVM。
  • 重新打开一个终端窗口,输入 nvm --version 命令,如果显示 NVM 的版本号,则表示安装成功。
  • 然后可以使用 NVM 来安装和管理不同的 Node.js 版本。例如,要安装最新版本的 Node.js,可以运行以下命令:
nvm install node
  • 安装完成后,可以使用以下命令来切换已安装的 Node.js 版本( version 是你想要使用的 Node.js 版本号):
nvm use <version>

在这里插入图片描述
这两种方法都可以安装 Node.js,并根据需要使用合适的版本。直接安装 Node.js 简单方便,适合大多数情况。而使用 NVM 可以方便地切换不同的 Node.js 版本,适用于需要同时管理多个项目或在不同项目之间使用不同的版本的场景。个人建议安装 nvm ,切换版本方便,假设要维护一个旧的 vue 项目,过高的 Node.js 版本会导致运行报错,所以安装 nvm 以备不时之需。

🧩使用 Node.js

通过上面的内容安装完成 Node.js 后,我们来简单使用下 Node.js。
打开 cmd ,然后输入 node ,进入 Node.js。
在这里插入图片描述
然后简单输出一条语句,“Hello, World!”。
在这里插入图片描述
同时我们也可以在 Node.js 上面运行 .js 的文件。通过命令 node xxx.js 来运行。


🎯Node.js 基础知识

🧩模块系统

Node.js 引入了模块系统,使得代码可以被组织成可重用的模块。通过使用 require 函数,可以引入其他模块并使用其中的功能。

// 引入内置模块
const fs = require('fs');

// 引入自定义模块
const myModule = require('./myModule');

// 使用模块功能
fs.readFile('file.txt', (err, data) => {
  if (err) throw err;
  console.log(data);
});

console.log(myModule.myFunction());

🧩异步编程

Node.js 使用异步编程模型来处理 I/O 操作,以提高应用程序的响应性能。通过回调函数或者 Promise,可以处理异步操作的结果。

// 异步回调函数
fs.readFile('file.txt', (err, data) => {
  if (err) throw err;
  console.log(data);
});

// 使用 Promise
const readFilePromise = util.promisify(fs.readFile);

readFilePromise('file.txt')
  .then(data => {
    console.log(data);
  })
  .catch(err => {
    console.error(err);
  });

🧩HTTP 服务器

Node.js 提供了一个内置的 http 模块,用于创建基于 HTTP 协议的服务器。

const http = require('http');

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello, World!');
});

server.listen(3000, '127.0.0.1', () => {
  console.log('Server running at http://127.0.0.1:3000/');
});

📝最后

本文介绍了 Node.js 的基础知识,并提供了一些示例代码来帮助读者入门。Node.js 是一个强大的工具,用于构建高效、可扩展的网络应用程序。希望本文对读者理解和使用 Node.js 有所帮助。
在这里插入图片描述


🎯文末送书

《Node.js从基础到项目实践》免费包邮送出 2 本!

在这里插入图片描述

📚内容介绍

《Node.js从基础到项目实践(视频教学版)》以理论结合实践的形式,讲解了Node.js 基础、框架、进阶知识和项目实践。本书为视频教学版,每一章节都有相对应的视频讲解,通过视频讲解可快速切入主题,提高学习效率。

全书分为4 大部分,共13 章,分别是Node.js 基础入门、Node.js 框架、Node.js 进阶以及企业项目实践。其中,第1~3 章为Node.js 基础入门讲解,包括Node.js 核心模块、自定义模块、第三方模块;第4~7 章为Node.js 框架讲解,包括Express 流行框架、MySQL 数据库、在Express 框架中操作MySQL 数据库以及Express 框架身份验证;第8~12 章为Node.js 进阶讲解,包括Node.js 事件循环、Koa 框架、socket.io、网络爬虫、GraphQL 基础语法;第13 章为企业项目实践讲解,使用Express 框架和MySQL 数据库完成x闻管理系统API 的开发。

📚作者介绍

在这里插入图片描述
《Node.js从基础到项目实践(视频教学版)》以理论结合实践的形式,讲解Node.js 基础、框架、进阶知识和项目实践。本书旨在帮助读者轻松、透彻地掌握Node.js技术,领悟到Node.js的开发精髓,快速提升至Node.js专业开发水平,真正迈入全栈工程师的行列。本书有以下特点。
(1)视频讲解,入门轻松。本书配套有相对应的视频讲解,通过视频讲解可快速切入主题,提高学习效率。

(2)案例丰富,本书几乎每个章节都提供了案例演示,且操作步骤详细,读者边学边做,可更有效地消化、理解所学的知识点。

(3)学以致用,实用性强。认真学习,可在短时间内掌握最实用的开发技巧。

(4)丰富的配套学习服务资源。为方便快速入门,本书配备了源码、课件、视频等学习资源,读者可扫描书中二维码学习、下载。


🔥参与方式

抽奖方式:评论区随机抽取 2 位小伙伴免费送出!
参与方式:关注博主、点赞、收藏、评论区评论 “人生苦短,我学Node.js!” (切记要点赞+收藏,否则抽奖无效,每个人最多评论三次!)
活动截止时间:2023-09-10 20:00
京东自营店购买链接:https://item.jd.com/13837592.html#
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/980463.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

matplotlib 使用

import matplotlib.pyplot as plt %matplotlib inlineplt.figure()#创建一个画布 plt.plot([1, 0, 9], [4, 5, 6])#点数据&#xff0c;横坐标&#xff0c;纵坐标&#xff0c;相当于&#xff08;1&#xff0c;4&#xff09;&#xff08;0&#xff0c;5&#xff09;&#xff08;9…

蒙特卡洛仿真

首先打开ADE&#xff0c;设置好要仿真的analysis以及output&#xff0c;工艺角选择mc 在ADE里面选择Launch-ADE XL&#xff0c;勾选想要仿真的输出(我这里要仿真的是DC电压)。 下图的输出结果要起好名字、type里面signal出来的结果是曲线图柱状图。expr&#xff08;表达式&…

天纵竞赛系统助力22届汉语桥世界大学生中文比赛

由教育部中外语言交流合作中心主办的第22届“汉语桥”世界大学生中文比赛在广西举行。本届比赛共有来自120个国家的138名选手参加。“汉语桥”世界大学生中文比赛创办20多年来&#xff0c;吸引了全球160多个国家和地区的150多万青年学子参与&#xff0c;已成为具有世界影响力和…

如何实现OPC UA远程通讯?

目录 一. 准备工作 1.1 在对接前我们需准备如下物品 1.2 EG20网关准备工作 1.3 软件和下位机准备工作 二. EMCP平台设置 2.1 新增EG设备 2.2 网关绑定 2.3 通讯参数设置 2.4 创建设备驱动 2.5 报警信息设置 2.6 历史报表管理 2.7 画面组态 三. 实验效…

(2022|CVPR,LDM)使用潜在扩散模型进行高分辨率图像合成

High-Resolution Image Synthesis with Latent Diffusion Models 公众号&#xff1a;EDPJ&#xff08;添加 VX&#xff1a;CV_EDPJ 进交流群获取资料&#xff09; 目录 0. 摘要 1. 简介 2. 相关工作 3. 方法 3.1 感知图像压缩 3.2 潜在扩散模型 3.3 调节机制 4. …

EF框架基础应用入门

文章目录 一、介绍二、EF6框架基础1. 数据模型和实体类2. 数据库上下文&#xff08;DbContext&#xff09;介绍3. 配置数据模型与数据库表的映射关系 两种方式Fluent API和数据注解Fluent API数据注解 4. 数据库迁移&#xff08;Migration&#xff09;概述a. 创建初始迁移b. 更…

需求评审时如何平衡团队成员间意见?

需求评审对于产品经理而言非常重要&#xff0c;通过需求评审我们可以提前规避可能的需求风险&#xff0c;减少因返工造成的资源浪费。如果不进行需求评审&#xff0c;这将直接影响项目的风险指数。 那么我们应该如何做好需求评审&#xff0c;有哪些需要注意的维度&#xff1f;如…

umi/max如何给请求增加公共header

直接上代码 根据 umi官网 介绍可知&#xff0c;umi/max仅提供一种运行时配置的方法。 如果是搭配typescript开发的话&#xff0c;最好使用umi/max提供的RequestConfig类型进行字段控制。 因为是在app.ts中添加的配置&#xff0c;但是并不知道该配置是在何时何地如何被使用的&…

swagger---接口文档管理生成管理工具

Swagger–接口生成工具 使用Swagger你只需要按照它的规范去定义接口及接口相关的信息&#xff0c;再通过Swagger衍生出来的一系列项目和工具&#xff0c; 就可以做到生成各种格式的接口文档&#xff0c;以及在线接口调试页面等等。 官网: https://lswagger.io/knife4j是为Jav…

业务逻辑漏洞复现

文章目录 一分钱买夹克任意商品购买 一分钱买夹克 登录portswigger&#xff0c;在all-labs中选择下面的题目&#xff1a; 打开后选择第一个商品&#xff1a; 打开后数量选择1&#xff0c;并用bp拦截数据包&#xff0c;点击添加购物车&#xff1a; 修改价格为1&#xff0c;点…

解密全产业供应关系,助力企业寻找客户资源,洞察商机

在当今商业竞争日益激烈的时代&#xff0c;企业要实现长期可持续的发展&#xff0c;需要深入了解供应链关系&#xff0c;抢先捕获商机&#xff0c;拓展优质的客户资源。然而&#xff0c;供应链关系错综复杂&#xff0c;商机、客户隐藏在其中&#xff0c;如何挖掘和洞察成为了企…

力扣(LeetCode)算法_C++——寻找重复的子树

给你一棵二叉树的根节点 root &#xff0c;返回所有 重复的子树 。 对于同一类的重复子树&#xff0c;你只需要返回其中任意 一棵 的根结点即可。 如果两棵树具有 相同的结构 和 相同的结点值 &#xff0c;则认为二者是 重复 的。 示例 1&#xff1a; 输入&#xff1a;root…

五大类注解和方法注解详解

五大类注解为Controller&#xff0c;Service&#xff0c;Repository&#xff0c;Configuration&#xff0c;Component,方法注解为Bean。 需要注意的是&#xff1a;Bean注解必须要在类注解修饰的类内才能正常使用。 一、与配置文件的关系 在spring原生项目中 如果你使用的spri…

亚马逊运营中,卖家们应该怎么挑选产品?

如今做亚马逊&#xff0c;选品是非常重要的。“七分靠选品&#xff0c;三分靠运营”&#xff0c;这话虽然会得罪运营小伙伴&#xff0c;但是目前平台就是这么个情况&#xff0c;一款好的产品基本上不需要花太多心思&#xff0c;加上一些运营技巧就能够很快表现优异。 那么选品…

深入浅出了解BeanFactory 和 ApplicationContext

一.区别 BeanFactory和ApplicationContext是Spring的两大核心接口&#xff0c;都可以当做Spring的容器。其中ApplicationContext是BeanFactory的子接口。 1.依赖关系 BeanFactory&#xff1a;是Spring里面最底层的接口&#xff0c;包含了各种Bean的定义&#xff0c;读取bean…

【系统设计系列】延迟吞吐和一致性

系统设计系列初衷 System Design Primer&#xff1a; 英文文档 GitHub - donnemartin/system-design-primer: Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards. 中文版&#xff1a; https://github.com/donnemarti…

Windows下搜索文件内容的关键字用什么命令

Windows下搜索文件内容的关键字用什么命令 findstr /s /n /i "keyword" file_path其中&#xff0c;/s 表示递归检索子文件夹&#xff0c;/n 表示显示搜索结果所在行号&#xff0c;/i 表示忽略大小写&#xff0c;“keyword” 是要搜索的关键字&#xff0c;file_path 是…

android程序中,产生ANR原因与分析解决

产生原因 在android程序中&#xff0c;所有的输入&#xff08;key和touch等&#xff09;事件是由底层的InputDispatcher分发到上层的InputManagerService的&#xff0c;再通过InputManagerService内部的InputMonitor送入WindowManagerService的Policy&#xff08;PhoneWindowM…

Linux CentOS7设置时区

在Linux系统中&#xff0c;默认使用的是UTC时间。 即使在安装系统的时候&#xff0c;选择的时区是亚洲上海&#xff0c;Linux默认的BIOS时间&#xff08;也称&#xff1a;硬件时间&#xff09;也是UTC时间。 在重启之后&#xff0c;系统时间会和硬件时间同步&#xff0c;如果…

C# 命令行参数分割

CommandLineToArgvW 函数 [DllImport("shell32.dll", SetLastError true)] private static extern IntPtr CommandLineToArgvW([MarshalAs(UnmanagedType.LPWStr)] string lpCmdLine, out int pNumArgs); 参数&#xff1a; [in] lpCmdLine 类型&#xff1a;…