H5总结2

166 阅读2分钟

💛 前途与玫瑰,来日与方长

一、日期时间在ios上报错

注:IOS不支持日期横杠链接(-),需替换为(/)


const iosDate = "ios的日期";
 
/** 有问题的 */
new Date(iosDate)    // NAN
 
/** 解决办法 - 每次转换Date格式前进行调整 */
const newIosDate = iosDate.replace(/-/g, '/');
new Date(newIosDate)  

二、日期格式转换方法

yyyy-mm-dd -> 时间戳

    // 2030-02-10 ➡️ "1896883200000"
    const getTime = (data) => {
            let date = new Date(data.replace(/-/g, '/'))
            return Date.parse(date).toString()
     }

标准时间 -> yyyy-mm-dd

 //标准时间 Sun Feb 10 2030 00:00:00 GMT+0800 (中国标准时间). ➡️ 2030-02-10
 const switchDate = (val) => {
    var d = new Date(val)
    d = d.getFullYear() + '-' + (d.getMonth() + 1) + '-' + d.getDate()
    return d
  }

三、遍历对象:值全置为空

utils/common.js

export function emptyObjValue(obj, defaultValue = {}) {
  for (let key in obj) {
    if (Object.prototype.hasOwnProperty.call(obj, key)) {
      const value = obj[key]
      if (Array.isArray(value)) {
        obj[key] = defaultValue[key] ?? []
      } else if (value && typeof value === 'object') {
        emptyObjValue(obj[key])
      } else if (typeof value === 'string') {
        obj[key] = defaultValue[key] ?? ''
      } else if (typeof value === 'boolean') {
        obj[key] = defaultValue[key] ?? false
      } else if (typeof value === 'number') {
        obj[key] = defaultValue[key] ?? ''
      }
    }
  }
}

页面引用

import { emptyObjValue } from '@/utils/common.js'

四、判断手机系统

utils/tool.js

export const getNavigatorType = () => {
  let temp = ''
  var u = navigator.userAgent
  if (u.indexOf('Android') > -1 || u.indexOf('Linux') > -1) {
    temp = 'Android'
  } else {
    temp = 'ios'
  }
  return temp
}

五、存取token方法

const key = 'accessToken'
// 设置
export const setToken = (token) => {
  localStorage.setItem(key, 'Bearer ' + token)
}
// 获取
export const getToken = () => localStorage.getItem(key)
// 删除
export const removeToken = () => {
  localStorage.removeItem(key)
}

六、常见正则

utils/regexp.js

export const Regex = {
  PHONE: /^\d+$/,
  EMAIL: /^[\w\W]+@[\w\W]+(\.[\w\W]+)+$/,
  ACCOUNT: /(^\d{5,20}$)|(^[\S]+@[\w|\d]+\.[\w|\d]+$)/,
  QR_CODE_FIX: /^commission:\/\//,
  PASSWORD: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,16}$/,
  CODE: /^\d{6}$/,
  SECURITY_PWD: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8}$/,
  ID_CARD: /^[\uFF08-\uFF09()A-Za-z0-9]{1,18}$/,
  IS_DECIMAL: /^\d+\.\d+$/,
  NUM_POSITUVE: /^([1-9]\d*.?|0.)\d*$/,
  // eslint-disable-next-line no-useless-escape
  NICKNAME: /^[\d\w\u4e00-\u9fa5,\.;\:"'?!\-]{2,11}$/,
  // eslint-disable-next-line no-useless-escape
  REMARK: /^.{1,30}$/,
  NUM_SIX_POINT: /^([1-9][0-9]*(\.[0-9]{1,6})?|0\.(?!0+$)[0-9]{1,6})$/,
  NUM_FOUR_POINT: /^([1-9][0-9]*(\.[0-9]{1,4})?|0\.(?!0+$)[0-9]{1,4})$/,
  NUM_TWO_POINT: /^([1-9][0-9]*(\.[0-9]{1,2})?|0\.(?!0+$)[0-9]{1,2})$/,
  NUM_ONE_POINT: /^([1-9][0-9]*(\.[0-9])?|0\.(?!0+$)[0-9])$/,
  POSITIVE_INTEGER: /^[1-9][0-9]*$/,
  NUM: /^[0-9]*$/,
  NAME: /^[a-zA-Z0-9]{8,16}$/,
  SITENO: /^[a-zA-Z]{2}$/,
  LENGTH: /^[\d\D]{8,20}$/,
  HAS_NUM: /\d+/,
  HAS_WORD: /(?=.*[a-z])(?=.*[A-Z])/,
  BANKCARD: /[0-9]{2,30}/,
  // eslint-disable-next-line no-useless-escape
  NAMEEN: /^[a-zA-Z]{1,21}$/,
  NAMEZH: /^[\u4E00-\u9FA5]{2,4}$/,
}

七、测试环境报错Uncaught SyntaxError: Unexpected token '<'

错误代码:

image.png

  • vue_cli打包后的项目,默认使用的是绝对路径,找根目录下的文件
  • 当放在服务器根目录时(只有一个项目),使用绝对路径/,是没有问题的
  • 服务器有多个文件夹(项目)时,就需要使用相对路径./

戳一戳

publicPath: '/',