💛 前途与玫瑰,来日与方长
一、日期时间在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 '<'
错误代码:
- vue_cli打包后的项目,默认使用的是绝对路径,找根目录下的文件
- 当放在服务器根目录时(只有一个项目),使用绝对路径/,是没有问题的
- 服务器有多个文件夹(项目)时,就需要使用相对路径./
publicPath: '/',