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

yizhihongxing

一、目标
本篇攻略旨在帮助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 函数调用的对象和方法

    JavaScript 函数调用的对象和方法是 JavaScript 中一个非常重要的概念,理解这个概念对于编写高质量的 JavaScript 代码非常有帮助。下面,我将为您详细讲解 JavaScript 函数调用的对象和方法。 函数调用的对象 JavaScript 函数可以作为另一个对象的属性值使用,这时候函数称为该对象的一个方法。在调用该方法时,方法内的关…

    JavaScript 2023年5月27日
    00
  • websocket++简单使用及实例分析

    Websocket++简单使用及实例分析 Websocket++是一个C++的WebSocket库,用于实现基于WebSocket协议的网络应用程序。这个库提供了许多的接口和功能,使得程序开发更为简单和高效,同时也支持多种平台和操作系统。本文将详细讲解Websocket++的简单使用及实例分析,帮助读者更好的了解这个库的特点和优势。 Websocket++的…

    JavaScript 2023年5月28日
    00
  • js 判断当前时间是否处于某个一个时间段内

    要判断当前时间是否处于某个时间段内可以通过 JavaScript 中的 Date 对象来实现。以下是判断当前时间是否处于某个时间段内的完整攻略: 1. 获取当前时间 获取当前时间可以使用 Date 对象来实现,调用 Date 对象构造函数即可得到当前时间的 Date 实例。例如: const currentTime = new Date(); 2. 定义时间…

    JavaScript 2023年5月27日
    00
  • 初步了解JavaScript,Ajax,jQuery,并比较三者关系

    初步了解 JavaScript、Ajax 和 jQuery JavaScript JavaScript 是一种轻量级的编程语言,用于在网页上创建交互式的效果。它是一种客户端脚本语言,意味着它是在用户的计算机上运行的。JavaScript 在网页上增加了很多功能,例如动态数据验证、弹出窗口、动画和页面轮廓等。 Ajax Ajax 是 Asynchronous …

    JavaScript 2023年6月11日
    00
  • js倒计时简单实现代码

    下面是“js倒计时简单实现代码”的完整攻略: 一、分析倒计时的实现原理 倒计时的实现原理是通过获取当前时间和目标时间之间的差值,然后将差值转换为天、时、分、秒等具体的时间单位,最后通过将时间单位显示在页面上达到倒计时的效果。 二、实现步骤 在html页面中创建一个计时器的容器,并在容器中添加显示天、时、分、秒的元素。 <div id="tim…

    JavaScript 2023年6月11日
    00
  • 详解JavaScript的表达式与运算符

    详解JavaScript的表达式与运算符 什么是表达式与运算符? 表达式(Expression)是一个可求值的代码片段,它可以包含变量、运算符、函数调用等,并最终会返回一个值。JavaScript 中的表达式有很多种类,如算术表达式、赋值表达式、比较表达式、逻辑表达式等。 运算符(Operator)则是用来处理表达式的一种特殊符号,它可以识别操作数之间的关系…

    JavaScript 2023年5月19日
    00
  • Javascript中replace方法与正则表达式的结合使用教程

    一、Javascript中replace方法与正则表达式的结合使用 replace()方法是Javascript中非常常用的一个方法,用于字符串的替换操作。结合正则表达式,可以更加灵活地对字符串进行替换操作。 基本语法 replace方法的基本语法如下: str.replace(regexp|substr, newSubstr|function) 其中,re…

    JavaScript 2023年6月10日
    00
  • JavaScript常见手写题超全汇总

    JavaScript常见手写题超全汇总 1. 前言 在面试以及实际工作中,常常需要手写一些核心的JavaScript代码。这些手写题目可能比较简单、或者非常复杂,但是它们都对JavaScript基础功夫有一个更加深刻的理解。 在本篇文章中,我们将会汇总一些常见的JavaScript手写题,包括但不限于:数组去重、深拷贝、Promise实现、函数柯里化等等。 …

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