企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
1. axios为什么既能在浏览器环境运行又能在服务器(node)环境运行? 因为:axios在浏览器端使用`XMLHttpRequest`对象发送ajax请求;在node环境使用`http`对象发送ajax请求。 问题来了:axios如何判断这两种环境呢? ``` var defaults.adapter = getDefaultAdapter(); function getDefaultAdapter () { var adapter; if (typeof XMLHttpRequest !== 'undefined') { // 浏览器环境 adapter = require('./adapter/xhr'); } else if (typeof process !== 'undefined') { // node环境 adapter = require('./adapter/http'); } return adapter; } ``` 上面几行代码,可以看出:XMLHttpRequest 是一个 API,它为客户端提供了在客户端和服务器之间传输数据的功能;process 对象是一个 global (全局变量),提供有关信息,控制当前 Node.js 进程。原来作者是通过判断XMLHttpRequest和process这两个全局变量来判断程序的运行环境的,从而在不同的环境提供不同的http请求模块,实现客户端和服务端程序的兼容。