07
2020
04

axios为什么既能在浏览器环境运行又能在服务器(node)环境运行?

axios在浏览器端使用XMLHttpRequest对象发送ajax请求;在node环境使用http对象发送ajax请求。


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请求模块,实现客户端和服务端程序的兼容。

« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。