<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ajiaming的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/ajiaming</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ajiaming]]></copyright><item><title><![CDATA[TypeScript]]></title><link>https://blog.youkuaiyun.com/ajiaming/article/details/153890984</link><guid>https://blog.youkuaiyun.com/ajiaming/article/details/153890984</guid><author>ajiaming</author><pubDate>Mon, 27 Oct 2025 10:00:00 +0800</pubDate><description><![CDATA[接口和抽象类有点像，但更灵活 —— 它只定义 “有什么属性和方法”，不管怎么实现，还能让多个类遵守同一个规则。]]></description><category></category></item><item><title><![CDATA[axios]]></title><link>https://blog.youkuaiyun.com/ajiaming/article/details/153350449</link><guid>https://blog.youkuaiyun.com/ajiaming/article/details/153350449</guid><author>ajiaming</author><pubDate>Fri, 17 Oct 2025 10:00:00 +0800</pubDate><description><![CDATA[axios 是一个基于 Promise 的 HTTP 客户端，支持浏览器和 Node.js 环境，主要特点包括：支持 GET、POST 等所有 HTTP 请求方法拦截请求和响应自动转换 JSON 数据取消请求超时设置错误处理客户端防御 XSRF 攻击当项目中存在多个后端服务（如 API 服务、文件服务），或需要不同的请求配置时，可创建多个自定义实例，避免全局配置冲突。// 创建自定义实例baseURL: "https://api.example.com", // 基础路径。]]></description><category></category></item><item><title><![CDATA[Promise]]></title><link>https://blog.youkuaiyun.com/ajiaming/article/details/147027655</link><guid>https://blog.youkuaiyun.com/ajiaming/article/details/147027655</guid><author>ajiaming</author><pubDate>Thu, 16 Oct 2025 10:00:00 +0800</pubDate><description><![CDATA[Promise 是异步编程的一种解决方案，比传统的回调函数更合理、更强大。ES6 将其纳入语言标准，统一了用法。语法上：Promise 是一个构造函数功能上：用于封装一个异步操作并获取其成功 / 失败的结果本质上：是一个状态机，通过状态的变化来驱动回调执行状态管理：通过不可逆的三种状态，清晰控制异步操作的结果；链式调用：通过then返回新 Promise，实现代码扁平化；统一错误处理：通过catch集中捕获链式调用中的所有错误；灵活的静态方法allraceallSettledany满足不同异步场景需求。]]></description><category></category></item><item><title><![CDATA[AJAX详解]]></title><link>https://blog.youkuaiyun.com/ajiaming/article/details/146286953</link><guid>https://blog.youkuaiyun.com/ajiaming/article/details/146286953</guid><author>ajiaming</author><pubDate>Sun, 16 Mar 2025 10:00:00 +0800</pubDate><description><![CDATA[AJAX全称为，就是异步的 JS和XML。通过AJAX可以在浏览器中向服务器发送异步请求，最大的优势：无刷新获取数据。AJAX不是新的编程语言，而是一种将现有的标准组合在一起使用的新方式。]]></description><category></category></item><item><title><![CDATA[ES6 ~ ES13]]></title><link>https://blog.youkuaiyun.com/ajiaming/article/details/139216370</link><guid>https://blog.youkuaiyun.com/ajiaming/article/details/139216370</guid><author>ajiaming</author><pubDate>Mon, 10 Mar 2025 10:00:00 +0800</pubDate><description><![CDATA[finally() 函数不接受参数，finally() 内部通常不知道 promise 实例的执行结果，所以通常在 finally() 方法内执行的是与 promise 状态无关的操作。方法会返回一个由一个给定对象的自身可枚举属性组成的数组，数组中属性名的排列顺序和正常循环遍历该对象时返回的顺序一致。需要注意，该方法的第一个参数是一个正则表达式对象，如果传的参数不是一个正则表达式对象，则会隐式地使用。方法返回一个给定对象自身的所有可枚举属性值的数组，排列顺序和正常循环遍历该对象时返回的顺序一致。]]></description><category></category></item><item><title><![CDATA[ES6新特性]]></title><link>https://blog.youkuaiyun.com/ajiaming/article/details/138870679</link><guid>https://blog.youkuaiyun.com/ajiaming/article/details/138870679</guid><author>ajiaming</author><pubDate>Mon, 27 May 2024 10:00:00 +0800</pubDate><description><![CDATA[关键字用来声明变量，使用  声明的变量有几个特点：不允许重复声明
允许在程序的任何位置使用  重新声明 JavaScript 变量：
在相同的作用域，或在相同的块中，通过  重新声明一个  变量是不允许的：
在相同的作用域，或在相同的块中，通过  重新声明一个  变量是不允许的：
在相同的作用域，或在相同的块中，通过  重新声明一个  变量是不允许的：
在不同的作用域或块中，通过  重新声明变量是允许的：
使用  关键字重新声明变量会带来问题。在块中重新声明变量也将重新声明块外的变量：
使用  关键字重新声]]></description><category></category></item><item><title><![CDATA[express]]></title><link>https://blog.youkuaiyun.com/ajiaming/article/details/136591346</link><guid>https://blog.youkuaiyun.com/ajiaming/article/details/136591346</guid><author>ajiaming</author><pubDate>Wed, 13 Mar 2024 10:00:00 +0800</pubDate><description><![CDATA[环境变量管理：用dotenv存储配置（端口、数据库地址等），避免硬编码创建.envPORT=3000# MySQL 配置MYSQL_HOST=localhost # 数据库主机（默认 localhost）MYSQL_PORT=3306 # 数据库端口（默认 3306）MYSQL_USER=root # 数据库用户名MYSQL_PASSWORD=your_pwd # 数据库密码（根据你的 MySQL 实际密码修改）]]></description><category></category></item><item><title><![CDATA[nvm 与 nrm]]></title><link>https://blog.youkuaiyun.com/ajiaming/article/details/136591203</link><guid>https://blog.youkuaiyun.com/ajiaming/article/details/136591203</guid><author>ajiaming</author><pubDate>Tue, 12 Mar 2024 10:00:00 +0800</pubDate><description><![CDATA[开发之路，工具先行，祝你少踩坑，多产出！]]></description><category></category></item><item><title><![CDATA[包管理工具]]></title><link>https://blog.youkuaiyun.com/ajiaming/article/details/136585012</link><guid>https://blog.youkuaiyun.com/ajiaming/article/details/136585012</guid><author>ajiaming</author><pubDate>Mon, 11 Mar 2024 10:00:00 +0800</pubDate><description><![CDATA[包”（英文package）是封装了特定功能的代码集合，通常包含：可复用的源码（如lodash的工具函数、react的组件核心）；描述文件（）：记录包名、版本、依赖、入口文件等元信息；其他辅助文件（文档、测试用例、LICENSE 等）。包的核心作用减少重复开发：无需从零编写通用功能（如日期格式化、数组去重）；标准化代码结构：遵循统一的目录规范，便于协作和维护；降低学习成本：第三方包的 API 通常有完善文档，开箱即用。uniq包仅做 “数组去重” 一件事，axios包专注于网络请求，vue。]]></description><category></category></item><item><title><![CDATA[Node.js 模块化]]></title><link>https://blog.youkuaiyun.com/ajiaming/article/details/136584862</link><guid>https://blog.youkuaiyun.com/ajiaming/article/details/136584862</guid><author>ajiaming</author><pubDate>Sun, 10 Mar 2024 10:00:00 +0800</pubDate><description><![CDATA[模块化：按 “高内聚、低耦合” 原则将程序拆分为多个文件的过程。“高内聚” 指单个文件聚焦单一功能（如用户认证模块只处理登录逻辑）；“低耦合” 指模块间通过固定接口交互，修改一个模块不影响其他模块。模块：拆分后的每个文件即为模块。模块自带私有作用域 —— 内部变量、函数默认仅自身可见（避免全局污染），同时可通过特定方式暴露成员供其他模块调用。必须用相对路径./当前目录，../上级目录），不可省略（否则会被误认为内置 / 第三方模块）。可省略后缀：Node.js 会按.js→.json→.node。]]></description><category></category></item><item><title><![CDATA[HTTP 协议]]></title><link>https://blog.youkuaiyun.com/ajiaming/article/details/136578197</link><guid>https://blog.youkuaiyun.com/ajiaming/article/details/136578197</guid><author>ajiaming</author><pubDate>Sat, 09 Mar 2024 20:00:00 +0800</pubDate><description><![CDATA[HTTP（HyperText Transfer Protocol，超文本传输协议）是一种基于TCP/IP的应用层通信协议，用于规范浏览器与万维网服务器之间的通信规则。超文本：不仅限于文本，还包括图片、视频、音频、链接等资源；传输协议：定义了数据在网络中传输的格式和规则；应用层：在 OSI 七层模型中属于最上层，直接面向用户应用场景。HTTP 协议是 Web 通信的基石，其核心是 “请求 - 响应” 模型，通过规范报文格式实现客户端与服务器的交互。]]></description><category></category></item><item><title><![CDATA[path 模块]]></title><link>https://blog.youkuaiyun.com/ajiaming/article/details/136288134</link><guid>https://blog.youkuaiyun.com/ajiaming/article/details/136288134</guid><author>ajiaming</author><pubDate>Mon, 26 Feb 2024 09:00:00 +0800</pubDate><description><![CDATA[path是 Node.js 的核心模块（无需额外安装），通过（CommonJS）或（ES 模块）即可引入。它的主要作用是：处理和转换文件 / 目录路径屏蔽不同操作系统的路径差异（自动适配或提供路径解析、拼接、分割等标准化方法无论是开发工具库、Web 服务还是 CLI 工具，path模块都是处理路径的首选方案。path模块是 Node.js 处理文件路径的 “瑞士军刀”，它通过一套简洁的 API 屏蔽了操作系统差异，解决了路径拼接、解析、规范化等核心问题。]]></description><category></category></item><item><title><![CDATA[fs 模块（文件系统）]]></title><link>https://blog.youkuaiyun.com/ajiaming/article/details/136103392</link><guid>https://blog.youkuaiyun.com/ajiaming/article/details/136103392</guid><author>ajiaming</author><pubDate>Sun, 25 Feb 2024 22:15:07 +0800</pubDate><description><![CDATA[fs（全称）是 Node.js 的内置模块，无需额外安装即可使用。它提供了一套完整的 API，用于操作计算机磁盘中的文件和目录，涵盖创建、读取、更新、删除（CRUD）等全流程。fs模块是 Node.js 操作文件系统的核心，掌握它能让你轻松处理本地文件交互。路径安全：始终使用path.resolve(__dirname, '相对路径')生成绝对路径，避免相对路径陷阱。编码风格：新手推荐，兼顾可读性与非阻塞特性；简单脚本可用同步 API。大文件处理：必用流式操作（），通过pipe简化数据传输。错误处理。]]></description><category></category></item><item><title><![CDATA[Buffer（缓冲器）]]></title><link>https://blog.youkuaiyun.com/ajiaming/article/details/136103099</link><guid>https://blog.youkuaiyun.com/ajiaming/article/details/136103099</guid><author>ajiaming</author><pubDate>Tue, 13 Feb 2024 08:00:00 +0800</pubDate><description><![CDATA[Buffer 是 Node.js 处理二进制数据的核心工具，其设计初衷是解决 JavaScript 对底层二进制流的处理短板。掌握 Buffer 的创建、读写、编码转换，以及在文件 IO、网络传输中的实战应用，是 Node.js 服务端开发的必备技能。同时，需注意编码一致性、内存安全性和性能优化细节，避免常见的乱码、内存泄露问题。只有深入理解 Buffer 的内存模型和设计理念，才能在复杂场景下（如大文件处理、自定义二进制协议）高效使用 Buffer。]]></description><category></category></item></channel></rss>