JavaScript前端实用的工具函数封装

一、目标
本篇攻略旨在帮助Javascript前端开发者快速了解常用的工具函数的封装,并学会自行编写及封装工具函数。

二、介绍
工具函数封装指的是将常用的功能代码封装成一个个可复用的函数,以便于代码重用、整合和维护。虽然功能代码可能并不复杂,但通过工具函数的封装,可以减少代码冗余,提高代码的可读性、可扩展性和可维护性。参考以上目标,我们可以将工具函数的封装分为以下几个步骤:

1.明确实现功能代码
在进行工具函数封装前,我们需要非常明确的知道这些函数需要完成什么功能,这里我们以两个简单的示例来说明:

  • 设置cookie
/**
 * 设置cookie
 * @param {string} key - 键对应的key值
 * @param {string} value - 储存在key下的值
 * @param {number} days - 有效天数
 */
function setCookie(key, value, days) {
  const date = new Date();
  date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);
  document.cookie = `${key}=${value};expires=${date.toGMTString()}`;
}
  • 判断是否为数组
/**
 * 判断是否为数组
 * @param {*} arr - 需要验证类型的参数
 * @returns {boolean}
 */
function isArray(arr) {
  return Array.isArray(arr);
}

2.封装函数

在明确功能后,我们需要将代码封装成函数,同时要确保函数名能够体现出对应的功能,函数的参数应尽可能的精简,这样可以提高函数的易用性和使用频率。

  • 设置cookie
function setCookie(key, value, days = 30) {
  const date = new Date();
  date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);
  document.cookie = `${key}=${value};expires=${date.toGMTString()}`;
}
  • 判断是否为数组
function isArray(arr) {
  return Array.isArray(arr);
}

这个封装好的函数可以写道公共js文件里,方便其他文件调用。

3.测试函数

在完成函数封装后,一定要测试函数是否正常使用。这个步骤通常需要用到mocha,chai这类的测试框架。我们这里选择用最简单暴力的方法测试刚才封装好的函数。

  • 设置cookie
setCookie('test', '123', 1);
  • 判断是否为数组
console.log(isArray([])); // true
console.log(isArray({})); // false

通过测试后,我们的两个工具函数就可以成功的使用了。

三、示例
下面以axios的封装来介绍工具函数的应用。

  1. 封装axios请求
/**
 * 将get、post方法封装到此方法中
 * @param {string} type - 请求类型
 * @param {string} url - 请求地址
 * @param {object} data - 请求参数
 * @param {string} dataType - 数据类型
 * @returns {Promise}
 */
const request = (type, url, data = {}, dataType = 'json') => {
  return new Promise((resolve, reject) => {
    if (type === 'get' || type === 'GET') {
      axios
        .get(url, {
          params: data,
          headers: {
            'Content-Type': 'application/json;charset=utf-8',
          },
        })
        .then((res) => {
          resolve(res);
        })
        .catch((e) => {
          reject(e);
        });
    } else if (type === 'post' || type === 'POST') {
      axios
        .post(url, data, {
          headers: {
            'Content-Type': 'application/json;charset=utf-8',
          },
        })
        .then((res) => {
          resolve(res);
        })
        .catch((e) => {
          reject(e);
        });
    }
  });
};

经过上面的封装后,我们就可以直接调用该方法来进行请求了。

request('get', 'https://abc.com/get', { id: '123' }).then((res) => {
  console.log(res);
});

request('post', 'https://abc.com/post', { id: '123' }).then((res) => {
  console.log(res);
});
  1. axios请求拦截
// 添加请求拦截器
axios.interceptors.request.use(
  function (config) {
    // 在发送请求之前做些什么
    const token = getCookie('Authorization');
    config.headers.Authorization = token ? token : '';
    return config;
  },
  function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
  }
);

通过封装axios请求拦截器,我们可以在每次请求前设置token,这样可以保证接口的安全性。getCookie函数的代码如下:

/**
 * 获取cookie
 * @param {string} name - 需要获取的cookie名称
 * @returns {string}
 */
function getCookie(name) {
  // eslint-disable-next-line no-useless-escape
  const reg = new RegExp(`(^| )${name}=([^;]*)(;|$)`);
  const arr = document.cookie.match(reg);
  if (arr) {
    return unescape(arr[2]);
  } else {
    return null;
  }
}

至此,通过对工具函数的封装,我们可以让代码变得更加简单易用,同时提高代码的可维护性和可扩展性。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript前端实用的工具函数封装 - Python技术站

(0)
上一篇 2023年6月11日
下一篇 2023年6月11日

相关文章

  • javascript 中动画制作方法 animate()属性

    当我们需要用JavaScript来制作一个动画时,最常用的办法就是使用animate()属性。它可以让我们定义元素在一段时间内的移动、淡入/淡出、尺寸变化等动画效果。 基本语法 animate()的基本语法如下: $(selector).animate({styles},speed,easing,callback) 参数说明: selector:表示需要动画…

    JavaScript 2023年6月10日
    00
  • JS实现的数组去除重复数据算法小结

    JS实现的数组去除重复数据算法小结 1. 利用Set去重 使用Set集合可以简便地去除数组中的重复元素,具体步骤如下: 定义一个Set集合 使用Array.from()方法将数组转换为一个新的Set集合 下一步,我们需要将Set集合转换为数组,使用Array.from()方法即可 示例代码: function unique(arr) { return Arr…

    JavaScript 2023年5月28日
    00
  • 浅谈Javascript面向对象编程

    下面是“浅谈Javascript面向对象编程”的完整攻略,包括了面向对象编程的基本概念、Javascript中面向对象编程的实现方式以及示例说明。 基本概念 面向对象编程(OOP)是一种编程范式,它将程序中的数据和操作封装在一起,通过对象之间互相交互实现程序的功能。在面向对象编程的范式中,对象是程序的基本单位,每个对象拥有自己的属性和方法。 面向对象编程通过…

    JavaScript 2023年5月27日
    00
  • JavaScript实例–创建一个欢迎cookie

    接下来我将为您详细讲解如何创建一个欢迎cookie的完整攻略。 1. 前言 在开始之前,我们需要明确一些概念: 1.1 cookie是什么? Cookie(中文:HTTP cookie)是指网站为了辨别用户身份而储存在用户本地终端(Client Side)上的数据(通常经过加密)。 1.2 Javascript中的document.cookie是什么? do…

    JavaScript 2023年6月11日
    00
  • 为什么JS中eval处理JSON数据要加括号

    引言 在处理JSON数据时,除了常见的JSON.parse()方法,一些开发者会使用eval()方法来处理JSON数据。但是,在使用eval()方法处理JSON数据时会遇到一个问题:数据中的第一个字符是左大括号({),JS会将其判定为代码块,从而抛出错误。为了解决这个问题,需要在JSON数据外面加上括号。本文将详细讲解为什么JS中eval处理JSON数据要加…

    JavaScript 2023年5月27日
    00
  • 微信小程序实现单个或多个倒计时功能

    这份攻略将分为以下几个部分: 实现单个倒计时功能 实现多个倒计时并且同步更新的功能 总结和扩展 1. 实现单个倒计时功能 我们可以通过以下步骤来实现一个单个倒计时功能: 在wxml文件中添加一个倒计时的框架: <view>{{countDown}}</view> 在js文件中定义倒计时的初始值和减一的函数: data: { count…

    JavaScript 2023年6月11日
    00
  • JavaScript运动函数实例详解

    JavaScript运动函数实例详解 运动函数是实现网页动画效果的必备工具之一,JavaScript中有多种运动函数实现方式,其中以JavaScript的定时器方式实现最为常见。本文将详细讲解使用JavaScript定时器实现运动函数的方法,同时给出两个示例说明。 定时器 JavaScript中用于实现定时器的函数是setInterval()和setTime…

    JavaScript 2023年5月27日
    00
  • 零基础轻松学JavaScript闭包

    零基础轻松学JavaScript闭包 什么是闭包 闭包的定义 闭包是指那些能够访问自由变量的函数。自由变量是指在函数中使用,但既不是函数参数,也不是函数的局部变量的变量。 闭包 = 函数 + 函数能够访问的自由变量 闭包的作用 闭包主要有以下两个作用: 延长外部作用域中变量的声明周期。当一个函数返回了一个内部函数后,内部函数会继续保持对外部函数的作用域的引用…

    JavaScript 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部