news 2026/6/3 10:40:41

Node.js

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Node.js

一、Node.js

1、是一个基于 Chrome V8 JavaScript 引擎构建的 JavaScript 运行时环境。简单来说,Node.js 让 JavaScript 可以在服务器端运行,而不仅仅局限于浏览器中。

2、js可以基于Node.js 写后端逻辑

二、安装Node.js

1、安装教程:https://www.runoob.com/nodejs/nodejs-install-setup.html

2、安装成功使用node -v校验是否成功

三、Node.js的使用

1、在node.js环境中执行js代码

在对应的js文件中打开终端,运行node js文件名

四、fs(读、写文件)

1、是 Node.js 里的一个内置模块,全称是File System,意思是文件系统

2、它的作用是:用 JavaScript 操作文件和文件夹

读取文件
写入文件
创建文件
删除文件
创建文件夹
判断文件是否存在

3、使用方式:const fs = require('fs');

(1)读取文件

const fs = require('fs'); fs.readFile('./test.txt', 'utf8', function (err, data) { if (err) { console.log('读取文件失败'); console.log(err); return; } console.log('读取文件成功'); console.log(data); });

(2)写入文件

const fs = require('fs'); fs.writeFile('./test.txt', '你好 Node.js', 'utf8', function (err) { if (err) { console.log('写入文件失败'); console.log(err); return; } console.log('写入文件成功'); });

(3)__dirname是 Node.js 里的一个特殊变量表示:当前文件所在的文件夹的绝对路径

path.join相当于+

const fs = require('fs'); const path = require('path'); const filePath = path.join(__dirname, 'test.txt'); fs.readFile(filePath, 'utf8', function (err, data) { if (err) { console.log('读取失败'); console.log(err); return; } console.log(data); });

五、http

1、是 Node.js 里的一个内置模块,用来创建HTTP 服务

2、服务器代码

const http = require('http'); const server = http.createServer(function (req, res) { console.log('请求地址:', req.url); console.log('请求方式:', req.method); res.setHeader('Content-Type', 'text/html; charset=utf-8');//防止中文乱码 res.end('请求成功');//将内容响应给客户端 }); server.listen(3000, function () { console.log('服务器启动成功:http://localhost:3000'); });

3、根据不同的url返回不同的html内容

const http = require('http'); const server = http.createServer((req, res) => { res.setHeader('Content-Type', 'text/html; charset=utf-8'); if (req.url === '/') { res.end('首页'); } else if (req.url === '/login') { res.end('登录页'); } else { res.end('404'); } }); server.listen(3000, () => { console.log('服务器启动成功:http://localhost:3000'); });

六、模块化(Nodejs遵循了CommonJS模块化规范)

CommonJS规定了模块的特性和各模块之间如何相互依赖。

1、把代码拆成多个文件,用的时候再引入。

2、Node.js 模块主要分为3 类

(1) 内置模块

Node.js 自带的模块,不需要安装,直接require使用。

const fs = require('fs');
const path = require('path');
const http = require('http');

(2)自定义模块

自己写的 JS 文件,然后用require引入。

(3)第三方模块(包)

https://www.npmjs.com/

别人写好的模块,需要先用npm安装,再使用。

常见第三方模块:

express Web服务器框架
mysql 操作 MySQL 数据库
axios 发送请求
dayjs 处理时间

比如安装express npm install express

const express = require('express'); const app = express(); app.get('/', (req, res) => { res.send('首页'); }); app.listen(3000, () => { console.log('服务器启动成功'); });

3、module是 Node.js 里每个 JS 文件自带的一个对象。

(1)module 表示当前这个模块,也就是当前这个 JS 文件

(2)console.log(module);

4、Node.js 模块化作用域

(1)每一个 JS 文件,都是一个独立的模块。模块里面的变量、函数,默认只能在当前文件里使用。

(2)想给别的文件用,必须导出

//test.js文件 const name = '张三'; function sayHello() { console.log('你好'); } //导出给别的文件使用 module.exports = { name, sayHello, }; //index.js文件 const obj = require('./test');//引入test.js文件 console.log(obj.name); obj.sayHello();

(3)module.exports等同于exports(同一个文件同一用法,尽量不要同时用)

(无论用module.exports还是exports),require()模块的时候,得到的是module.exports指向的对象

5、Node.js 项目里初次装包,一般会多出这几个东西:

(1)node_modules 真正安装的包
package.json 项目说明书,记录你用了哪些包——npm init -y生成 package.json文件
package-lock.json 锁定包版本,保证大家安装一致

(2)npm i会自动安装最新的包,可通过@指定具体版本——npm i dayjs@1.11.10

npm i -g 全局包

(3)装包后,它里面会多一个dependencies,记录安装了哪些包

核心依赖包dependencies:开发阶段与上线都要用到的包安装到dependencies(默认)

开发依赖包devDependencies:只在开发阶段用的包安装到devDependencies——npm i 包名 --save-dev(缩写:npm i 包名 -D)

(4)npm uninstall卸载包

(5)包下载慢,默认国外的镜像,要切换到国内淘宝镜像

nrm切换下包镜像源

(6)i5ting_toc 是一个可以把Markdown 文件转换成 HTML 页面的 npm 工具

它常用于把.md笔记生成一个带目录的网页

npm i i5ting_toc -g //下载包

i5ting_toc -f 文件名.md //转换

(7)模块的加载机制

Node.js 模块加载顺序:

1. 内置模块:直接加载
2. 自定义模块:用 ./ 或 ../ 找文件
3. 第三方模块:去 node_modules 找
4. 加载过的模块会缓存,不会重复执行

自定义模块加载:

先文件
后目录

文件:
.js
.json
.node

目录:
package.json -> main

找不到再找:
index.js
index.json
index.node

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/3 10:38:54

网盘直链下载助手:一键获取真实下载地址的终极解决方案

网盘直链下载助手:一键获取真实下载地址的终极解决方案 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼…

作者头像 李华
网站建设 2026/6/3 10:35:46

DEIM:革新实时目标检测,让 DETR 又快又准

一句话概括 DEIM 是一个针对 DETR 系列实时目标检测器的训练加速框架,通过 Dense O2O(密集一对一匹配) 增加监督信号密度,配合 MAL(匹配质量感知损失) 优化低质量匹配,实现 收敛速度翻倍 精度提…

作者头像 李华
网站建设 2026/6/3 10:25:22

Arduino ESP32连接GY39传感器,数据上传到ThingsBoard物联网平台教程

ESP32与GY39传感器数据上云全指南:从硬件连接到ThingsBoard可视化 在智能农业、环境监测或工业物联网项目中,如何将传感器数据可靠地传输到云端并实现可视化一直是开发者面临的挑战。ESP32作为一款兼具Wi-Fi和蓝牙功能的低成本开发板,配合GY…

作者头像 李华
网站建设 2026/6/3 10:24:12

c#从零开始:基于卷影复制的轻量级版本管理实现

在软件开发的过程中,我们时常要面对批量文件变更的场景:部署前对配置做批量替换、用脚本迁移资源路径、对素材库做大规模重构……这些操作一旦出错,回滚代价极高甚至不可行。我们曾经尝试过各种方案:系统还原点太粗糙、通用版本控…

作者头像 李华