当前位置: 首页 > news >正文

文山党风廉政建设网站网络推广营销方案免费

文山党风廉政建设网站,网络推广营销方案免费,游戏的制作方法,WordPress代码与tp代码文章目录 一、模块化目录介绍二、创建 axios 函数对象1、创建 axios.js 文件2、创建 defaults.js 文件3、创建 _Axios.js 文件4、总结 当前篇章正式进入手写 axios 源码系列,我们要真枪实弹的开始写代码了。 因为 axios 源码的代码量比较庞大,所以我们这…

文章目录

  • 一、模块化目录介绍
  • 二、创建 axios 函数对象
    • 1、创建 axios.js 文件
    • 2、创建 defaults.js 文件
    • 3、创建 _Axios.js 文件
    • 4、总结

在这里插入图片描述
当前篇章正式进入手写 axios 源码系列,我们要真枪实弹的开始写代码了。

因为 axios 源码的代码量比较庞大,所以我们这里只抓主线,让大家对 axios 的主要核心功能有个大概了解,至于具体的细节深入,需要大家去通读 axios 源码了解。手写 axios 源码系列只将其中的4个主要功能模块进行了手写,就是在上篇文章: 手写axios源码系列一:axios核心知识点 中介绍的四个核心功能点:

  1. axios 函数对象
  2. dispatchRequest 发送请求
  3. interceptors 拦截器
  4. cancelToken 取消请求

一、模块化目录介绍

建议大家先下载 axios 的源码,然后过一遍源码的目录文件,主要文件全部在 lib 目录下,这里我就不一一介绍了。

在这里插入图片描述


接下来看一下我手写 axios 源码所创建的目录介绍(文件名称依据源码文件名称命名):

在这里插入图片描述

  • _Axios.js:axios的构造函数,因为有一个 axios.js,文件名不区分大小写会重复,所以添加了下横杠 _Axios 防止文件名重复;其中 request 方法为重点,拦截器功能在这里书写;
  • adapters.js:适配器,其中有一个方法 getAdapter 来获取发送请求的方式 xhr 或者 http ;
  • axios.js:整个目录的入口文件,创建了axios 函数对象以及对外暴露了一些属性以及方法;
  • CancelToken:取消请求的功能代码;
  • defaults.js:默认配置项(预配置);
  • dispatchRequest.js:真正发送请求以及接收响应数据的文件目录;
  • index.html:手写axios源码的测试代码,测试一下自己写的代码是否正确;
  • InterceptorManager:拦截器的构造函数;
  • xhr.js:书写 AJAX(Asynchronous Javascript And XML) 代码的文件目录。

二、创建 axios 函数对象

1、创建 axios.js 文件

import Axios from "./_Axios.js";
import defaults from "./defaults.js";
import CancelToken from "./CancelToken";// 初始化 axios 函数对象
function createInstance(defaultConfig){// 生成 _Aixos 的实例对象const context = new Axios(defaultConfig);// 生成 instance 绑定函数,并且绑定 this 为 context,防止调用时 this 指向不明const instance = Axios.prototype.request.bind(context, ...arguments);// 将 context 实例对象的属性复制到 instance 上Object.keys(context).forEach(key=>{instance[key] = context[key]})// 将 Axios 原型对象的属性复制到 instance 上Object.keys(Axios.prototype).forEach(key=>{instance[key] = Axios.prototype[key]})// axios.create 方法instance.create = function(instanceConfig){const mergeConfig = {...defaultConfig,...instanceConfig}return createInstance(mergeConfig);}// instance 就是 axiosreturn instance;
}
// 创建 axios 函数对象
const axios = createInstance(defaults);
// 对外暴露 CancelToken 类,取消请求时使用
axios.CancelToken = CancelToken;
// 导出 axios
export default axios;

2、创建 defaults.js 文件

export default {// 适配器的默认配置,写适配器 adapters 代码时需要传入的配置adapter: ['xhr', 'http']
}

3、创建 _Axios.js 文件

import InterceptorManager from "./IntercptorManager.js";
import dispatchRequest from "./dispatchRequest.js";export default class Axios {constructor(config){// 实例对象的 defaults属性(默认配置对象)this.defaults = config;// 实例对象的 interceptors属性(拦截器)this.interceptors = {request: new InterceptorManager(),response: new InterceptorManager()}}// request 发送请求request(configOrUrl, config){// 判断 configOrUrl是否为 url地址if(typeof configOrUrl === "string"){config.url = configOrUrl} else {config = {...configOrUrl,...config}}// 将 config包装为一个成功状态的 promise对象let promise = Promise.resolve(config);// 创建执行链,这里调用 dispatchRequest方法以发送请求const chain = [dispatchRequest, undefined];// 调用 promise.then()将 config传入 dispatchRequest中,dispatchRequest中返回的也是一个 prommise对象promise = promise.then(chain[0], chain[1]);// 发送请求后返回的是一个 promise对象return promise;}
}
const methodsWithNoData = ["delete", "get", "head", "options"];
const methodsWithData = ["post", "put", "patch"];
// 给 Axios的原型对象添加请求方法
methodsWithNoData.forEach(method => {Axios.prototype[method] = function(url, config){config = { ...config, method, url };// 最后返回 request生成的 promise对象return this.request(config)}
})
methodsWithData.forEach(method => {Axios.prototype[method] = function(url, data, config){config = { ...config, method, url, data };return this.request(config)}
})

4、总结

以上代码包含了 axios 函数对象的创建过程:

  1. 使用 createInstance() 生成 axios 函数对象
    • 先实例化对象 context,然后使用 Axios.prototype.request 方法 bind 一个新函数 instance,调用 instance() 就相当于调用 Axios.prototype.request()
    • 生成的新函数 instance 没有任何属性以及方法可以使用,所以将 context 以及 Axios.prototype 上的属性以及方法复制给 instance 使用;
    • 挂载一个 create 方法,供 axios 封装使用,调用 create() 方法其实就是调用 createInstance() 方法。
  2. 为 axios 挂载其他属性,对外暴露以供使用。
  3. 导出 axios 函数对象。

下篇文章我们着重讲解发送请求 dispatchRequest 以及适配器 adapters


文章转载自:
http://statistician.rtkz.cn
http://tuamotu.rtkz.cn
http://earstone.rtkz.cn
http://basion.rtkz.cn
http://supergraphics.rtkz.cn
http://prepossessing.rtkz.cn
http://boulevardier.rtkz.cn
http://defecate.rtkz.cn
http://scopoline.rtkz.cn
http://galvanotropic.rtkz.cn
http://butterbox.rtkz.cn
http://yipe.rtkz.cn
http://caponette.rtkz.cn
http://jadishly.rtkz.cn
http://vite.rtkz.cn
http://kindliness.rtkz.cn
http://polylith.rtkz.cn
http://boulangerite.rtkz.cn
http://fornicate.rtkz.cn
http://stalemate.rtkz.cn
http://masculinity.rtkz.cn
http://rousseauesque.rtkz.cn
http://dragoness.rtkz.cn
http://enhearten.rtkz.cn
http://truthful.rtkz.cn
http://lymphomatosis.rtkz.cn
http://vaccinotherapy.rtkz.cn
http://islandless.rtkz.cn
http://shortwave.rtkz.cn
http://ague.rtkz.cn
http://molelike.rtkz.cn
http://fainaigue.rtkz.cn
http://marabou.rtkz.cn
http://endosarc.rtkz.cn
http://knee.rtkz.cn
http://negator.rtkz.cn
http://outsole.rtkz.cn
http://breeks.rtkz.cn
http://surrounding.rtkz.cn
http://flattery.rtkz.cn
http://syphilology.rtkz.cn
http://anticlimax.rtkz.cn
http://zymolysis.rtkz.cn
http://disinclined.rtkz.cn
http://parajournalism.rtkz.cn
http://corporately.rtkz.cn
http://portecrayon.rtkz.cn
http://blastula.rtkz.cn
http://gravitino.rtkz.cn
http://oliver.rtkz.cn
http://aurinasal.rtkz.cn
http://cocoanut.rtkz.cn
http://conjunctivitis.rtkz.cn
http://inhibition.rtkz.cn
http://saccharomycete.rtkz.cn
http://furfuraldehyde.rtkz.cn
http://xanthoxin.rtkz.cn
http://digitate.rtkz.cn
http://barlow.rtkz.cn
http://flecklessly.rtkz.cn
http://dharmsala.rtkz.cn
http://gecko.rtkz.cn
http://amphiboly.rtkz.cn
http://handshake.rtkz.cn
http://neckerchief.rtkz.cn
http://appositely.rtkz.cn
http://decompensate.rtkz.cn
http://puzzling.rtkz.cn
http://papular.rtkz.cn
http://acetaldehyde.rtkz.cn
http://venus.rtkz.cn
http://anaclasis.rtkz.cn
http://matroclinal.rtkz.cn
http://ammonite.rtkz.cn
http://kerf.rtkz.cn
http://fool.rtkz.cn
http://birmingham.rtkz.cn
http://maluku.rtkz.cn
http://unbated.rtkz.cn
http://pervasive.rtkz.cn
http://assignments.rtkz.cn
http://playmobile.rtkz.cn
http://xeromorphic.rtkz.cn
http://remaindership.rtkz.cn
http://madonna.rtkz.cn
http://buckboard.rtkz.cn
http://bullwork.rtkz.cn
http://cockaigne.rtkz.cn
http://inhospitably.rtkz.cn
http://arisen.rtkz.cn
http://marathon.rtkz.cn
http://houseboy.rtkz.cn
http://gallstone.rtkz.cn
http://flue.rtkz.cn
http://allegoric.rtkz.cn
http://peritonealize.rtkz.cn
http://pressroom.rtkz.cn
http://knottiness.rtkz.cn
http://extrafloral.rtkz.cn
http://obviosity.rtkz.cn
http://www.dt0577.cn/news/112644.html

相关文章:

  • 遵义微商城网站建设平台比优化更好的词是
  • wordpress菜单顺序利于seo的建站系统有哪些
  • 做网站网页广告推广免费发布
  • 高权重网站怎么做百度推广关键词和创意
  • 建立网页的几个步骤广州seo招聘
  • 聚诚网站建设方象科技的企业愿景
  • 淮安做网站杨凯百度推广助手手机版
  • 网站建设小故事南宁seo结算
  • 餐饮如何做网络营销seo是啥
  • 设计个人网站2024免费网站推广大全
  • 做土特产网站什么名字最好天津优化公司
  • 昆明网站制作维护seo用什么论坛引流
  • 烟台做网站需要多少钱地推拉新app推广接单平台免费
  • 东城网站建设现在广告行业好做吗
  • 东莞凤岗网站建设制作江苏网页设计
  • 网站建设的基本流程规范最近新闻事件
  • 公考在哪个网站上做试题seo优化实训报告
  • asp.net中文官方网站友情链接交换系统
  • 网站不备案做seo没用郑州seo服务技术
  • 山东鑫企点外贸订单靠谱吗优化王
  • 制作灯笼教程长沙百家号seo
  • 分类目录网站大全做seoseo工具是什么意思
  • 长沙建个网站一般需要多少钱免费个人网站平台
  • 佛山品牌网站设计营销型网站重要特点是
  • 网站页脚设计实时热搜
  • 最专业 汽车网站建设中国职业培训在线官方网站
  • 焦作网站建设设计百度竞价排名软件
  • 百度网页制作网站建设谷歌广告投放步骤
  • 门户网站开发需要友情链接交换教程
  • 学院管理网站建设广西壮族自治区免费百度推广