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高级程序设计之变量与作用域

    JavaScript高级程序设计中的变量和作用域是一个基础而又重要的概念。下面是一个详细的攻略,帮助你深入理解变量和作用域。 变量 声明变量 声明变量是在程序中创建变量的过程。在JavaScript中,可以使用三种关键字来声明变量: var let const 其中,var是ES5的语法,let和const是ES6的语法。使用var定义的变量的作用域是在函数…

    JavaScript 2023年5月27日
    00
  • 3分钟精通高阶前端随手写TS插件

    接下来我将详细讲解如何通过3分钟精通高阶前端随手写TS插件的攻略。 1. 了解 TypeScript TypeScript是微软开源的高级类型应用程序设计语言。它是JavaScript的一种超集,支持静态类型检查、编译时类型检查、类型推断等功能。在使用TypeScript之前,需要了解TypeScript的基本概念、语法和用法。 2. 安装 TypeScri…

    JavaScript 2023年6月11日
    00
  • 在vue中实现嵌套页面(iframe)

    在vue中实现嵌套页面(iframe)需要进行以下步骤: 步骤一:安装依赖 使用vue-cli等工具创建一个vue项目后,在项目根目录下执行以下命令,安装vue-iframe包 npm install –save vue-iframe 步骤二:注册组件 打开项目的main.js,注册全局组件 import Vue from ‘vue’ import vue…

    JavaScript 2023年6月11日
    00
  • JavaScript 图像动画的小demo

    让我来详细讲解一下“JavaScript 图像动画的小demo”的完整攻略。 1. 设计思路 通过 Canvas 创建动画效果,可以将图形动态地展示到网页上。这个小demo的设计思路就是以一只小乌龟为例,讲解如何使用 Canvas 创建动画效果。主要有以下几个步骤: 创建 Canvas 元素 获取 Canvas 画布的上下文 加载乌龟图片资源 设置画布宽高和…

    JavaScript 2023年6月10日
    00
  • Javascript UrlDecode函数代码

    下面就是Javascript UrlDecode函数代码的详细攻略: UrlDecode 函数 UrlDecode 函数用于解码一个已经编码的 URL 字符串。在 Javascript 中,这个函数可以用 unescape() 方法实现。 语法 unescape(string) 其中,string 表示需要解码的 URL 字符串。 示例 示例1:解码 URL…

    JavaScript 2023年5月19日
    00
  • JS动态添加与删除select中的Option对象(示例代码)

    下面我将详细讲解如何通过JavaScript动态地添加和删除<select>元素中的<option>元素。 1. 添加<option>元素 通过JavaScript动态地往<select>元素中添加<option>元素,可以用以下代码: // 获取<select>元素 var selec…

    JavaScript 2023年6月10日
    00
  • Element Carousel 走马灯的具体实现

    要实现一个Element Carousel 走马灯需要以下几个步骤: 1.引入Element库和样式表 在HTML文件中引入Element库和样式表 <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css&quo…

    JavaScript 2023年6月10日
    00
  • Javascript 面向对象之重载

    Javascript 面向对象之重载 什么是重载 重载(Overloading)指的是一个类中多个方法的名称相同,但是参数列表不同(参数类型、参数个数、参数顺序),这样的方法称为重载方法。在使用时,编译器会根据参数数量、类型和顺序来决定调用哪个方法。 然而在 Javascript 中,由于其灵活的语言特性,本身不支持函数的重载。 如何实现重载 通过 argu…

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