js小功能收集

本文汇集了JavaScript的实用小功能,包括Vue自动更新版本号、NodeJS+Express处理静态资源、浏览器环境判断、数组与对象操作、日期处理、树形结构数据操作以及正则表达式等。内容涵盖打开新选项卡、关闭当前选项卡、数组类型判断、对象为空判断、图片下载、深拷贝函数以及日期比较等常见场景。
摘要由CSDN通过智能技术生成

相关资源

vue,自动更新版本号

修改 package.json 的 version

function changePackageJsonVersion() {
    //每次打包构建代码,自动更新版本号,同一天加1,隔天自动回归变成 1 。例如{ 今天:1.20200917.3,第二天:1.20200918.1 }
    const fs = require('fs');
    try {
        function AddZero(time) {
            if (time < 10) {
                return '0' + time;
            } else {
                return time;
            }
        }

        let packageTxt = fs.readFileSync('./package.json', 'utf8');
        let versionData = packageTxt.split('\n');
        let packageJson = JSON.parse(packageTxt);
        let VersionArr = packageJson.version.split('.');
        let date = new Date();
        let today =
            date.getFullYear() +
            '' +
            AddZero(date.getMonth() + 1) +
            '' +
            AddZero(date.getDate());
        if (today == VersionArr[1]) {
            VersionArr[2] = parseInt(VersionArr[2]) + 1;
        } else {
            VersionArr[1] =
                date.getFullYear() +
                '' +
                AddZero(date.getMonth() + 1) +
                '' +
                AddZero(date.getDate());
            VersionArr[2] = 1;
        }
        let versionLine = VersionArr.join('.');
        for (let i = 0; i < versionData.length; i++) {
            if (versionData[i].indexOf('"version":') != -1) {
                versionData.splice(
                    i,
                    1,
                    '    "version": "' + versionLine + '",'
                );
                break;
            }
        }
        fs.writeFileSync('./package.json', versionData.join('\n'), 'utf8');
    } catch (e) {
        // console.log(chalk.red.bold('读取文件修改版本号出错:', e.toString()));
    }
}

NodeJS + express访问html、css、JS等静态资源文件

链接

判断浏览器环境

  • 是否是微信打开的h5页面
       
       isWeixin() {
           let wx = navigator.userAgent.toLowerCase();
           if (wx.match(/MicroMessenger/i) == 'micromessenger') {
               return true;
           } else {
               return false;
           }
       },
    
  • 是否是ios手机
       isIOS() {
                let u = navigator.userAgent,
                    app = navigator.appVersion;
      			 return !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/);
       },
    

打开新的浏览器选项卡

window.open(url, '_blank');

关闭当前浏览器选项卡

function closeWin(){
	if (navigator.userAgent.indexOf("Firefox") != -1 || navigator.userAgent.indexOf("Chrome") != -1) {
	    window.location.href = "about:blank";
	    window.close();
	} else {
	    window.opener = null;
	    window.open("", "_self");
	    window.close();
	};
}

如何判断数组类型

Array.isArray(arr)

如何判断一个对象是不是空对象?

Object.keys(obj).length === 0

利用a标签解析url

在这里插入图片描述

function urlParse(url, key) {
  var a = document.createElement('a')
  a.href = url
  var result = {
    href: url,
    protocol: a.protocol.replace(':', ''),
    port: a.port,
    query: a.search,
    params: (function(){
      var ret = {}, centArr,
        seg = a.search.replace(/^\?/, '').replace(/^\?/,'').split('&')
      for (i = 0, len = seg.length; i < len; i ++) {
        if (!seg[i]) { continue }
        centArr = seg[i].split('=')
        ret[centArr[0]] = centArr[1]
      }
      return ret
    }()),
    hash: a.hash,
    file: (a.pathname.match(/\/([^\/?#]+)$/i) || [, ''])[1],
    path: a.pathname.replace(/^([^\/])/, '/$1'),
    relative: (a.href.match(/tps?:\/\/[^\/]+(.+)/) || [, ''])[1],
    segments: a.pathname.replace(/^\//, '').split('/')
  }
  a = null
  return key ? result[key] : result
}
  • H5 有新的 API URL 也可以快速的处理一个链接
var url = new URL('https://www.baidu.com/')
url.hash

js 实现图片点击下载功能

  • 方法一
        downloadQrFunc2() {
          var src1 =
            "https://pic2.zhimg.com/v2-5ec052fff9d691c6a61654ed16440547_400x224.jpg";
          var src =
            "https://bkimg.cdn.bcebos.com/pic/2934349b0
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值