跳过正文

NodeJS

2、Buffer
·1860 字·4 分钟· loading · loading
前端 NodeJS NodeJS API
Buffer简介 # JavaScript 语言自身只有字符串数据类型,没有二进制数据类型。
5、nvm
·539 字·2 分钟· loading · loading
前端 NodeJS NodeJS环境
nvm(Node Version Manager)是Node.js的版本管理器,可以让我们轻松地在不同的Node.js版本之间进行切换。
2、NPM
·1581 字·4 分钟· loading · loading
前端 NodeJS NodeJS环境
什么是NPM # NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题,常见的使用场景有以下几种:
8、多进程和多线程
·2449 字·5 分钟· loading · loading
前端 NodeJS NodeJS API
多进程和多线程的选择 # node.js 目前有两种方案,一种是使用children_process或者cluster开启多进程进行计算,一种是使用worker_thread 开启多线程进行计算
7、http
·2039 字·5 分钟· loading · loading
前端 NodeJS NodeJS API
Node.js 的 http 模块提供了创建HTTP 服务器和客户端的功能。 HTTP 服务器 # 创建方法 # 使用createServer 创建 # const http = require('http'); // 创建服务对象 const server = http.createServer((req, res) => { res.writeHead(200, { 'Content-Type': 'text/plain' }); res.end('Hello World\n'); }); // 开启监听 3000 端口 server.listen(3000, '127.0.0.1', () => { console.log('服务器运行在 http://127.0.0.1:3000/'); }); 使用 Server 类创建 # const http = require('http'); const server = new http.Server((req, res) => { // 设置统一响应头 res.writeHead(200, { 'Content-Type': 'text/plain' }); // 设置统一响应体 res.end('Hello World\n'); }); server.listen(3001); 处理不同请求方法 # const http = require('http'); // 2. 使用 Server 类 const server = new http.Server((req, res) => { res.writeHead(200, { 'Content-Type': 'text/plain' }); res.end('Hello World\n'); }); server.listen(3001); // 处理不同请求方法 const server = http.createServer((req, res) => { switch (req.method) { case 'GET': handleGet(req, res); break; case 'POST': handlePost(req, res); break; default: res.writeHead(405); res.end('Method Not Allowed'); } }); // get 方法处理函数 function handleGet(req, res) { res.writeHead(200, { 'Content-Type': 'application/json' }); res.end(JSON.stringify({ message: 'GET request handled' })); } // post 方法处理函数 function handlePost(req, res) { let body = ''; req.on('data', chunk => { body += chunk.toString(); }); req.on('end', () => { try { const data = JSON.parse(body); res.writeHead(200, { 'Content-Type': 'application/json' }); res.end(JSON.stringify({ received: data })); } catch (e) { res.writeHead(400); res.end('Invalid JSON'); } }); } 服务端事件 # // 1. 连接事件 server.on('connection', (socket) => { console.log('新连接建立'); socket.on('data', (chunk) => { console.log('收到数据:', chunk.toString()); }); socket.on('end', () => { console.log('连接结束'); }); socket.on('error', (err) => { console.error('Socket 错误:', err); }); }); // 2. 请求事件 server.on('request', (req, res) => { console.log('收到请求:', req.method, req.url); }); // 3. 错误事件 server.on('error', (err) => { console.error('服务器错误:', err); }); // 4. 关闭事件 server.on('close', () => { console.log('服务器关闭'); }); // 5. 监听事件 server.on('listening', () => { console.log('服务器开始监听'); }); 服务端常用方法 # // 1. 启动服务器 server.listen(3000, '127.0.0.1', () => { console.log('服务器运行在 http://127.0.0.1:3000/'); }); // 2. 关闭服务器 server.close(() => { console.log('服务器已关闭'); }); // 3. 获取服务器地址信息 const address = server.address(); console.log('服务器地址:', address); // { address: '127.0.0.1', family: 'IPv4', port: 3000 } // 4. 设置超时 server.setTimeout(60000); // 60 秒 server.on('timeout', (socket) => { console.log('连接超时'); }); // 5. 获取最大头信息大小 const maxHeaderSize = server.maxHeaderSize; console.log('最大头信息大小:', maxHeaderSize); // 6. 设置最大头信息大小 server.maxHeaderSize = 16384; // 16KB 回调函数 # 请求对象 (http.IncomingMessage) # 即我们在创建 server 时回调函数的第一个参数
6、文件系统
·3212 字·7 分钟· loading · loading
前端 NodeJS NodeJS API
FS 简介 # Node.js 的文件系统模块(fs 模块)提供了丰富的 API,用于读取、写入、删除文件以及执行其他文件系统操作。
5、util
·602 字·2 分钟· loading · loading
前端 NodeJS NodeJS API
util 模块是 Node.js 的一个内置模块,包含了实用工具函数,用于支持 JavaScript 编程中的调试、错误处理、格式化等功能。
4、全局对象
·3893 字·8 分钟· loading · loading
前端 NodeJS NodeJS API
global # JavaScript 中有一个特殊的对象,称为全局对象(Global Object),它及其所有属性都可以在程序的任何地方访问,即全局变量。
4、webpack
·3280 字·7 分钟· loading · loading
前端 NodeJS NodeJS环境
Webpack # 从本质上,Webpack是现代JavaScript应用的静态模块打包工具
3、模块化
·3014 字·7 分钟· loading · loading
前端 NodeJS NodeJS环境
什么是模块 # 将一个复杂的程序依据一定的规则(规范)封装成几个块(文件), 并进行组合在一起 块的内部数据与实现是私有的, 只是向外部暴露一些接口(方法)与外部其它模块通信 在node中,一个js文件就是一个模块,每个模块单独运行在一个函数中,所以一个js文件中的变量和函数的作用域不是全局的,如果需要在其他js中使用,那么需要使用引入 node中模块分为两大类:核心模块(node提供或npm下载的,例如fs);文件模块(自己写的模块) 解决的问题 # 请求过多 首先我们要依赖多个模块,那样就会发送多个请求,导致请求过多 依赖模糊 我们不知道他们的具体依赖关系是什么,也就是说很容易因为不了解他们之间的依赖关系导致加载先后顺序出错。 难以维护 以上两种原因就导致了很难维护,很可能出现牵一发而动全身的情况导致项目出现严重的问题。模块化固然有多个好处,然而一个页面需要引入多个js文件,就会出现以上这些问题。 CommonJS和ES6Modules # CommonJS和 ES6 模块系统是 JavaScript 中两种主要的模块处理方式。它们在语法、加载方式和使用场景上都有显著的区别。