428 字
1 分钟
nodejs初学
Node.js 基础
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时,用于在服务端运行 JavaScript 代码。以下是 Node.js 的基本概念和常用功能。
Node.js 简介
特点
- 单线程、非阻塞 I/O:通过事件循环和异步 I/O,提高高并发能力。
- 基于模块化:使用 CommonJS 模块规范,代码组织更清晰。
- 跨平台:支持多种操作系统(Windows、Linux、macOS)。
应用场景
- 构建 Web 服务(如 REST API)。
- 创建实时应用程序(如聊天、游戏)。
- 脚本工具(如自动化任务)。
- 操作文件系统。
基本模块
Node.js 提供了许多内置模块,以下是常用模块:
-
fs****(文件系统模块)- 处理文件和目录。
const fs = require("fs");// 同步读取文件const data = fs.readFileSync("example.txt", "utf-8");console.log("File content:", data);// 异步读取文件fs.readFile("example.txt", "utf-8", (err, data) => {if (err) throw err;console.log("Async file content:", data);}); -
http****(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, () => {console.log("Server running at http://localhost:3000/");}); -
path****(路径操作模块)- 处理文件路径。
const path = require("path");const filePath = path.join(__dirname, "example.txt");console.log("File path:", filePath); -
os****(操作系统信息模块)- 获取操作系统相关信息。
const os = require("os");console.log("Platform:", os.platform());console.log("Total Memory:", os.totalmem());
npm 和包管理
npm 的作用
- npm(Node Package Manager)是 Node.js 的包管理工具,用于安装和管理第三方库。
常用命令
-
初始化项目
npm init -y- 生成
package.json文件。
- 生成
-
安装包
npm install express- 默认安装到
node_modules目录,并记录到package.json。
- 默认安装到
-
安装全局包
npm install -g nodemon- 全局安装的包可直接作为命令使用。
-
移除包
npm uninstall express
使用第三方模块
Express 示例
Express 是一个常用的 Node.js Web 框架,适合快速构建 Web 服务。
-
安装 Express
npm install express -
创建简单服务器
const express = require("express");const app = express();app.get("/", (req, res) => {res.send("Hello, Express!");});app.listen(3000, () => {console.log("Express server running at http://localhost:3000/");});
异步编程模式
Node.js 的核心是异步编程,以下是几种常用方式:
-
回调
const fs = require("fs");fs.readFile("example.txt", "utf-8", (err, data) => {if (err) throw err;console.log("File content:", data);}); -
Promise
const fs = require("fs").promises;fs.readFile("example.txt", "utf-8").then((data) => console.log("File content:", data)).catch((err) => console.error(err)); -
async/await
const fs = require("fs").promises;async function readFileContent() {try {const data = await fs.readFile("example.txt", "utf-8");console.log("File content:", data);} catch (err) {console.error(err);}}readFileContent();
分享
如果这篇文章对你有帮助,欢迎分享给更多人!
部分信息可能已经过时
相关文章 智能推荐
1
基于 Nest.js 和 Angular 的竞价平台-以及Jest测试和CICD
BACKEND 该项目是一个基于Nest.js和Angular的竞价平台,提供用户注册、项目管理和投标管理功能,使用PostgreSQL作为数据库,并通过Swagger生成API文档。后端实现了安全认证,使用AWS Cognito进行用户身份验证。前端构建了用户友好的界面,支持项目展示和投标管理。项目使用Jest进行测试,确保代码质量,并通过GitHub Actions实现持续集成和部署。
2
关于一次EOA钱包的签名验证及其相关内容
WEB3 本篇文章深入解析了以太坊 EOA 钱包一次签名验证的完整流程与背后数学原理。首先回顾了 secp256k1 曲线的有限域 Fₚ、椭圆曲线点群 E(Fₚ) 以及基点 G 与其阶 n 的基本概念,详细说明了点加法、点倍加和标量乘法的模 p 与模 n 计算方式。随后,文章通过实际的 SIWE(Sign‑In with Ethereum)场景,逐步展示了钱包在收到签名请求后如何生成 r/s/v 三元组,包括哈希计算、随机数 k 的生成、R 点的求取以及 r、s、v 的具体公式。接着,服务端如何利用已知的 r、s、v、消息哈希 e 和基点 G 逆向求解公钥 Q 的公式 Q = r⁻¹(sR − eG) 进行验证,并通过 keccak‑256 取后 20 字节得到钱包地址,实现无私钥泄露的所有权确认。文章还指出了 p 与 n 的区别、椭圆曲线离散对数问题的计算难度(约 2¹²⁸)以及当前量子计算对该安全性的潜在影响。整体内容为开发者提供了从理论到实现的完整参考,适合作为博客 SEO 摘要,提升相关关键词(如 “EOA 钱包签名验证”“secp256k1”“ECDSA”“SIWE”)的搜索可见性。
3
一个对于EOA的EVM钱包登陆界面
WEB3 从一个 EOA 钱包登录小项目出发,整理 connect wallet、SIWE 签名消息、wagmi 签名请求与后端验签之间的关系,说明钱包登录为什么需要“连接地址”和“签名证明控制权”两步。
4
新时代的第一轮筛选
life 本篇文章探讨了在AI快速发展背景下,使用先进模型的成本将成为新一轮社会筛选的关键因素。作者表达了对模型使用费用上升可能导致的数字鸿沟的焦虑,指出当使用费用从当前的补贴价提升至更高水平时,普通用户可能难以负担,从而形成技术使用的阶层分化。文章还回顾了AI在安全、视频、音乐等领域的多元应用,强调AI正从编码工具向更广泛的产业渗透。作者以个人视角阐述了在资本有限的情况下,如何在时代浪潮中摸索前行,并呼吁关注技术成本对大众使用的影响。关键词:AI 模型成本、数字鸿沟、技术筛选、AI 应用、时代焦虑。
5
博客迁移-Mizuki配置记录
infra 从notionNext迁移到mizuki的过程记录,主要原因是notionNext的限制。选择mizuki是因为其轻量级和良好的功能平衡,支持日记和项目展示。配置过程简单,内容通过md和ts文件控制,同时实现了与bangumi API的连接。计划通过CI同步notion内容,并进行多语言适配,解决了图片链接过期的问题。





