当前位置: 首页 > news >正文

【前端】Node.js使用教程

目录

一、?Node.js开发环境和编译

1.1 安装Node.js

1.2 创建一个Node.js项目

1.3 编写Node.js程序

1.4 运行Node.js程序

1.5 使用Node.js模块

二、高级的Node.js编程概念和示例

2.1 异步编程

2.2 错误处理

2.3 网络请求

2.4 构建Web服务器

2.5 数据库交互

三、Node.js开发中重要方面和概念

3.1 环境变量和配置文件

3.1.1 使用环境变量

3.1.2 使用配置文件?

3.2 日志记录

3.2.1 使用`winston`进行日志记录

3.3 安全性

3.4 单元测试

四、结论


Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它让JavaScript运行在服务器端。以下是一个简单的Node.js使用教程:

一、Node.js开发环境和编译

1.1 安装Node.js

访问Node.js官网下载并安装适合您操作系统的Node.js版本。

1.2 创建一个Node.js项目

在您的工作目录中,创建一个新的文件夹作为项目目录,例如命名为`my_node_project`。在该目录下打开命令行工具,运行`npm init`命令来初始化项目,按照提示完成项目的初始化设置。

1.3 编写Node.js程序

在项目目录中创建一个名为`app.js`的文件,使用文本编辑器打开它,并写入以下代码:

???console.log('Hello, World!');
1.4 运行Node.js程序

在命令行中,确保您位于项目目录下,然后运行以下命令来执行您的程序:

???node app.js

您应该会在命令行中看到输出`Hello, World!`。

1.5 使用Node.js模块

Node.js拥有一个庞大的模块生态系统,可以通过npm(Node.js的包管理器)来安装和管理这些模块。例如,安装Express.js(一个简单而灵活的Node.js Web应用框架):

???npm install express

然后在`app.js`中引入并使用Express.js:

???const express = require('express');???const app = express();???const port = 3000;???app.get('/', (req, res) => {?????res.send('Hello, World!');???});???app.listen(port, () => {?????console.log(`Example app listening at ***${port}`);???});

再次运行`node app.js`,然后在浏览器中访问`***`,您将看到`Hello, World!`的响应。

以上步骤提供了一个基础的Node.js使用教程,帮助您开始使用Node.js进行开发。随着您对Node.js的进一步学习,您将能够构建更复杂的应用程序。当然,我可以继续扩展Node.js的使用教程。

二、高级的Node.js编程概念和示例

2.1 异步编程

Node.js以其非阻塞I/O和事件驱动的特性而闻名,这意味着它非常适合执行异步操作。在Node.js中,您可以使用回调函数、Promises、async/await等机制来处理异步操作。

使用async/await进行异步操作

const fs = require('fs').promises;async function readFile(filePath) {??try {????const data = await fs.readFile(filePath, 'utf8');????console.log(data);??} catch (error) {????console.error('Error reading file:', error);??}}readFile('example.txt');
2.2 错误处理

在Node.js中,错误处理非常重要。您应该始终准备捕获和处理可能发生的错误,以避免程序崩溃。

使用try/catch进行错误处理

在上面的`readFile`函数中,我们已经展示了如何使用try/catch来处理异步操作中的错误。

2.3 网络请求

Node.js内置了`http`和`https`模块,允许您轻松地进行HTTP和HTTPS请求。但更常见的做法是使用第三方库,如`axios`或`node-fetch`,因为它们提供了更丰富的功能和更简洁的API。

使用`axios`发送GET请求

首先,您需要安装`axios`:

npm install axios

然后,在您的代码中使用它:

const axios = require('axios');axios.get('https://api.example.com/data')??.then(response => {????console.log(response.data);??})??.catch(error => {????console.error('Error fetching data:', error);??});
2.4 构建Web服务器

如上所述,Express.js是构建Node.js Web服务器的流行选择。除了简单的路由和中间件功能外,Express.js还允许您构建RESTful API、模板渲染等。

设置Express.js路由

const express = require('express');const app = express();app.get('/', (req, res) => {??res.send('Home Page');});app.get('/about', (req, res) => {??res.send('About Page');});app.listen(3000, () => {??console.log('Server is running on port 3000');});
2.5 数据库交互

Node.js应用程序经常需要与数据库进行交互。MongoDB是NoSQL数据库的一个流行选择,它与Node.js搭配使用时,可以通过`mongoose`等库轻松进行ODM(对象文档映射)操作。

使用`mongoose`连接MongoDB并查询数据

首先,安装`mongoose`:

npm install mongoose

然后,连接到MongoDB数据库并执行查询:

const mongoose = require('mongoose');mongoose.connect('mongodb://localhost:27017/mydatabase', {??useNewUrlParser: true,??useUnifiedTopology: true});const Cat = mongoose.model('Cat', { name: String });Cat.find({}, function(err, cats) {??if (err) {????console.error(err);??} else {????console.log(cats);??}});

注意:上面的代码示例是基于较旧版本的mongoose和MongoDB驱动程序的语法。在最新的版本中,您可能需要调整连接选项和查询API的使用方式。

这只是Node.js开发中的一小部分概念。随着您深入学习,您将能够构建更复杂、更强大的应用程序。继续实践,探索更多的库和框架,以及学习Node.js的最佳实践。

三、Node.js开发中重要方面和概念
3.1 环境变量和配置文件

在开发过程中,您可能需要根据不同的环境(如开发、测试、生产)使用不同的配置。环境变量和配置文件是管理这些配置的好方法。

3.1.1 使用环境变量

Node.js可以通过`process.env`对象访问环境变量。您可以在操作系统中设置环境变量,然后在Node.js应用中使用它们。

const port = process.env.PORT || 3000;app.listen(port, () => {??console.log(`Server is running on port ${port}`);});
3.1.2 使用配置文件

对于更复杂的配置,您可以使用如`dotenv`、`config`等npm包来管理配置文件。

首先,安装`dotenv`:

npm install dotenv

然后,在项目根目录下创建一个`.env`文件,并添加您的配置:

PORT=3000DB_HOST=localhostDB_USER=myuserDB_PASS=mypassword

在您的应用中使用`dotenv`来加载这些配置:

require('dotenv').config();const port = process.env.PORT;// 其他环境变量使用...
3.2 日志记录

在生产环境中,日志记录对于监控应用性能、调试问题和追踪用户活动至关重要。

3.2.1 使用`winston`进行日志记录

首先,安装`winston`:

npm install winston

然后,在您的应用中使用`winston`来记录日志:

const winston = require('winston');const logger = winston.createLogger({??level: 'info',??format: winston.format.json(),??transports: [????new winston.transports.File({ filename: 'error.log', level: 'error' }),????new winston.transports.File({ filename: 'combined.log' })??]});// 记录日志logger.info('Hello world!');
3.3 安全性

在开发Web应用时,安全性是一个重要考虑因素。Node.js应用可能会面临各种安全威胁,如SQL注入、跨站脚本(XSS)、跨站请求伪造(CSRF)等。

使用`helmet`增强安全性

`helmet`是一个Express.js中间件,它可以帮助您保护应用免受一些常见的Web漏洞的攻击。

首先,安装`helmet`:

npm install helmet

然后,在您的Express应用中使用它:

const express = require('express');const helmet = require('helmet');const app = express();app.use(helmet());// 其他中间件和路由...
3.4 单元测试

单元测试是确保代码按预期工作的关键步骤。在Node.js中,您可以使用如`mocha`、`jest`等测试框架来编写和运行单元测试。

使用`mocha`和`chai`进行单元测试

首先,安装`mocha`和`chai`:

npm install --save-dev mocha chai

然后,编写测试用例并使用`mocha`运行它们:

mocha test/*.js

请注意,这只是一个非常基本的介绍。在实际项目中,您可能需要配置测试环境、编写更复杂的测试用例,并使用如`sinon`、`chai-http`等库来模拟依赖项和HTTP请求。

四、结论

为了深入学习Node.js,您可以查阅官方文档,参加在线课程,阅读相关书籍,或者加入社区和论坛来获取帮助和交流经验。

Node.js是一个功能强大的平台,支持快速开发高性能的Web应用和服务。通过掌握上述概念和工具,您可以构建出既安全又高效的应用。不过,请记住,持续学习和实践是成为优秀Node.js开发者的关键。随着技术的不断发展,新的库、框架和最佳实践将不断涌现,您需要保持对新知识的关注并不断更新自己的技能。

相关文章:

【前端】Node.js使用教程

目录 一、?Node.js开发环境和编译 1.1 安装Node.js 1.2 创建一个Node.js项目 1.3 编写Node.js程序 1.4 运行Node.js程序 1.5 使用Node.js模块 二、高级的Node.js编程概念和示例 2.1 异步编程 2.2 错误处理 2.3 网络请求 2.4 构建Web服务器 2.5 数据库交互 三、No…...

django33全栈班2025年004 录入数据

前言 通过前面的学习, 我们已经算是Python基本入门了. 如果你能熟练的掌握的话, 至少让你换台电脑, 在新电脑上搭建Python的开发环境肯定是没问题的. 我们呢也学习了第一行Python代码, 但是我们不知道这行代码是什么意思, 为什么能够运行, 怎么就能输出到控制台呢? 还有, …...

小白投资理财 - 看懂 EPS 每股收益

小白投资理财 - 看懂 EPS 每股收益 什么是 EPSEPS 缺陷EPS 优点EPS 跟自己比EPS 跟别人比 总结 投资一家公司就要选择会赚钱的公司,我们最为关心的莫过于公司的盈利能力,只有会下蛋的鸡才是好鸡,买股票为的就是获得利润。想成为一位成功的投资…...

Pandas-apply自定义函数

文章目录 一. Series的apply方法1. 一个元素一个元素的传入2. apply传入一个参数函数2.apply传入多个参数函数 二. DataFrame的apply方法1. axis参数指定按行/ 按列(默认)传入数据2. apply使用 三. apply 使用案例1. 栗子12. 栗子2-列3. 栗子3-行 四. 向量化函数1. 使用np.vect…...

github 项目分享

今天和大家分享一些github上面搜到关于卫星遥感和水环境相关的项目。 一、WaterDetect 使用端到端算法去识别水体范围的算法,针对哨兵2卫星遥感数据可用。 项目地址: https://github.com/cordmaur/WaterDetect 二、DeepWaterMap 深度卷积神经网络去…...

与你共度的烟火日常

见过不少人、经过不少事、也吃过不少苦,感悟世事无常、人心多变,靠着回忆将往事串珠成链,聊聊感情、谈谈发展,我慢慢写、你一点一点看...... 我和她一起收拾完屋子,忙完已经中午了。她说:“咱们去趟超市吧&…...

基于Python的社交音乐分享平台

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…...

Kafka的acks机制和ISR列表

Kafka 是一个流行的分布式流处理平台,用于构建实时数据流管道和应用程序。在 Kafka 中,acks 机制和 ISR(In-Sync Replicas)列表是两个重要的概念,它们共同确保消息的持久性和可靠性。 acks 机制 acks 机制是 Kafka 生…...

FreeRTOS: ISR(中断服务例程)和 TCB(任务控制块)

在讨论 ISR(中断服务例程)和 TCB(任务控制块,Task Control Block)时,我们实际上是在探讨 FreeRTOS 中两个不同但又相互关联的概念:一个是用于处理硬件或软件触发的中断事件,另一个是…...

【Spring】Spring DI(依赖注入)详解—自动装配—byType实现原理

一、引言 依赖注入(Dependency Injection, DI)是Spring框架的核心特性之一,它通过控制反转(Inversion of Control, IoC)来管理对象的生命周期和依赖关系。在实际应用中,DI不仅提高了代码的可维护性和可测试…...

015-spring-动态原理、AOP的xml和注解方式

强制使用cglib动态代理 spring-AOP的使用...

linux更换yum源

1.备份系统源文件 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak2.下载国内的yum源到/etc/yum.repos.d/CentOS-Base.repo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo如无法使用wget命令也可以…...

跨年战揭开本地生活新赛季:美团、抖音和快手争夺冰雪经济

元旦将至,冬季文旅消费渐至高潮。 2024年的文旅消费市场延续了去年冰雪游的热度,不断创下年内话题和热度新高。美团旅行数据显示,12月以来,雪场夜滑搜索热度同比增长65%,TOP5搜索城市分别是北京、乌鲁木齐、张家口、吉…...

文件传输工具FTransferor<优化篇>

在上一篇文章中,我们详细探讨了FTransferor文件传输工具的设计与实现,并展示了它在局域网文件传输方面的高效性。然而,随着互联网应用场景的不断丰富,传统的基于 TCP/UDP 的传输方式已经无法满足部分开发者的需求。特别是在跨平台…...

【最新】17个一站式数据集成平台案例PPT下载(Apache SeaTunnel )

17个Apache SeaTunnel案例下载见附件! 开发篇 1.Apache SeaTunnel——OLAP 引擎的数据动脉 1.1项目定位——EtLT 时代的新一代数据集成平台 1.2Apache SeaTunnel 核心功能 1.3Apache SeaTunnel 在 OLAP 场景下的应用 1.4WhaleTunnel 产品特性 2.教你从头到尾开发一…...

【每日学点鸿蒙知识】子窗口方向、RichEdit不居中、本地资源缓存给web、Json转对象丢失方法、监听状态变量数组中内容改变

1、HarmonyOS 应用新建子窗口设置显示方向未生效? 子窗口getPreferredOrientation获取到的是横向 设置没问题,但是ui显示还是纵向的 直接设置主窗口的方向即可。参考demo: import window from ohos.window;Entry Component struct Index {…...

【AI绘画】Midjourney前置指令/imagine与单图指令详解

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: AI绘画 | Midjourney 文章目录 💯Midjourney前置指令/imagine什么是前置指令?/imaginepromptUpscale(图像分离)Variations(变化)🔄&a…...

【鸿蒙NEXT】鸿蒙里面类似iOS的Keychain——关键资产(@ohos.security.asset)实现设备唯一标识

前言 在iOS开发中Keychain 是一个非常安全的存储系统,用于保存敏感信息,如密码、证书、密钥等。与 NSUserDefaults 或文件系统不同,Keychain 提供了更高的安全性,因为它对数据进行了加密,并且只有经过授权的应用程序才…...

学习笔记 --C#基础其他知识点(数据结构)

C#中的数据结构《二》–视频学习笔记 在数据结构的分类: 1.集合 2.线性 3.树形 4.图状结构 数据结构是数据在程序中的存储结构,和基本的数据操作 算法:解决问题的解决思路,基于数据结构 本课程包括:线性表&#xff…...

AI与药学 | ChatGPT 在临床药学中的有效性以及人工智能在药物治疗管理中的作用

《Effectiveness of ChatGPT in clinical pharmacy and the role of artificial intelligence in medication therapy management》这篇文献研究了ChatGPT在临床药学,特别是在药物治疗管理(MTM)中的有效性。 一、研究背景 (Background) MTM …...

Local SDXL-Turbo保姆级教学:处理‘Out of Memory’错误的3种显存优化技巧

Local SDXL-Turbo保姆级教学:处理‘Out of Memory’错误的3种显存优化技巧 1. 引言:当“实时绘画”遇上“显存不足” 想象一下,你刚部署好Local SDXL-Turbo,正期待体验“打字即出图”的丝滑快感。你输入了第一个提示词&#xff…...

Granite TimeSeries FlowState R1多步预测效果深度解析:不确定性估计与置信区间可视化

Granite TimeSeries FlowState R1多步预测效果深度解析:不确定性估计与置信区间可视化 1. 引言 在金融交易、能源负荷预测或者供应链管理这些领域,做预测从来都不是一件轻松的事。我们常常会遇到这样的困境:模型告诉你明天股价会涨&#xf…...

告别黑白!用C#和Free Spire.Barcode打造吸睛品牌二维码(附Logo、文字、配色完整代码)

用C#打造品牌级二维码:从技术实现到视觉营销的完整指南 在数字化营销的时代,二维码早已不再是简单的黑白方块。它们成为了品牌与用户互动的第一触点,承载着传递品牌调性、吸引用户注意的重要使命。想象一下,当消费者在咖啡杯、产品…...

在Windows系统上本地调用云端InternLM2-Chat-1.8B模型实践

在Windows系统上本地调用云端InternLM2-Chat-1.8B模型实践 你是不是也遇到过这种情况:想体验一下最新的对话大模型,但自己的电脑配置不够,跑不动动辄几十亿参数的大模型?或者,你只是想在自己的Python项目里快速集成一…...

[拆解LangChain执行引擎]一个实例理解LangChain的几种流模式

invoke/ainvoke方法看起来是采用简单的请求/回复消息交换模式,客户端需等待整个流程执行完毕后才能得到结果,其实方法背后还是会调用stream/astream方法以流的方式进行交互。如果我们直接调用调用这两个方法,并采用相应的流模式,我…...

OpenClaw配置备份指南:百川2-13B-4bits量化版环境迁移技巧

OpenClaw配置备份指南:百川2-13B-4bits量化版环境迁移技巧 1. 为什么需要专门备份OpenClaw配置 上周我的主力开发机突然硬盘故障,导致所有数据丢失。最让我痛心的不是代码仓库——它们都有远程备份,而是那套精心调校的OpenClaw自动化环境。…...

Mac用户福利:用Open-AutoGLM和MLX框架,免费运行手机AI助理

Mac用户福利:用Open-AutoGLM和MLX框架,免费运行手机AI助理 1. 项目介绍 1.1 什么是Open-AutoGLM? Open-AutoGLM是智谱AI开源的一款手机端AI智能助理框架。它能通过自然语言指令控制你的安卓手机,自动完成各种操作任务。想象一下…...

从边缘网关到上位机:CODESYS OPC UA通信的5个关键配置项与一个避坑指南

从边缘网关到上位机:CODESYS OPC UA通信的5个关键配置项与一个避坑指南 在工业自动化领域,OPC UA已经成为设备间通信的事实标准协议。不同于传统的OPC DA,OPC UA提供了跨平台、安全可靠的数据传输能力。然而在实际部署中,特别是使…...

Pixel Dream Workshop 安全与伦理:在图像生成中应用软件测试思维进行内容过滤

Pixel Dream Workshop 安全与伦理:在图像生成中应用软件测试思维进行内容过滤 1. 引言:当AI绘画遇上软件测试思维 最近在测试Pixel Dream Workshop这个AI绘画工具时,我发现一个有趣的现象:很多团队在追求生成效果的同时&#xf…...

FUTURE POLICE语音模型系统资源优化:C盘清理与模型缓存管理技巧

FUTURE POLICE语音模型系统资源优化:C盘清理与模型缓存管理技巧 你是不是也遇到过这种情况?兴致勃勃地部署了FUTURE POLICE语音模型,准备大展身手,结果没过多久,电脑C盘就亮起了刺眼的红色警告,空间告急。…...