工具类函数就是工具,哪儿需要搬哪儿。
/**
* 将URL中的参数转换为对象
* @author ZhangLai
* @create 2017-12-11
* @param {String} url [请求的URL地址]
* @return {Object} [将请求的参数部分转换为一个对象]
*/
export function param2Obj( url ) {
const search = url.split('?')[1]
if (!search) {
return {}
}
return JSON.parse('{"' + decodeURIComponent(search).replace(/"/g, '\\"').replace(/&/g, '","').replace(/=/g, '":"') + '"}')
}
/**
* [纯数据对象的深度拷贝]
* @author ZhangLai
* @create 2017-12-11
* @param {Object} obj [被复制的JSON对象]
* @return {Object} [深度复制后的JSON对象]
*/
export function deepCopyDataObj( obj ){
return JSON.parse( JSON.stringify( obj ));
}
/**
* [用于条件判断的断言方式,如果条件不成立,直接抛出异常。]
* @author ZhangLai
* @create 2017-12-12
* @param {Boolean} condition [需要检测的条件]
* @param {String} msg [如果前面的条件不成立,抛出的异常的信息]
* @return {Exception} [条件不成立时,直接抛出异常]
*/
export function assert (condition, msg) {
if (!condition) throw new Error(`[ct] ${msg}`);
}
/**
* [调试模式下的断言方式,仅在非生产环境下有效。]
* @author ZhangLai
* @create 2017-12-12
* @param {Boolean} condition [需要检测的条件]
* @param {String} msg [如果前面的条件不成立,抛出的异常的信息]
* @return {Exception} [条件不成立时,直接抛出异常]
*/
export function debugAssert( condition , msg ){
if( process.env.NODE_ENV !== 'product' ){
if (!condition) throw new Error(`[ct-debug] ${msg}`);
}
}
/**
* [判断一个对象是否是一个promise对象]
* @author ZhangLai
* @create 2017-12-12
* @param {Object} val [需要判断的对象]
* @return {Boolean} [如果某个对象是Promise,则返回true,否则,返回false]
*/
export function isPromise (val) {
return val && typeof val.then === 'function'
}
表单校验的功能函数定义
/* 是否是有效的用户名 */
export function isvalidUsername(str) {
const valid_map = ['admin', 'editor']
return valid_map.indexOf(str.trim()) >= 0
}
/* 合法uri*/
export function validateURL(textval) {
const urlregex = /^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/
return urlregex.test(textval)
}
/* 小写字母*/
export function validateLowerCase(str) {
const reg = /^[a-z]+$/
return reg.test(str)
}
/* 大写字母*/
export function validateUpperCase(str) {
const reg = /^[A-Z]+$/
return reg.test(str)
}
/* 大小写字母*/
export function validateAlphabets(str) {
const reg = /^[A-Za-z]+$/
return reg.test(str)
}
/** 邮箱地址 **/
export function validateEmail(email) {
const re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
return re.test(email)
}
还有48个实用的功能函数,这儿不列了,这儿有链接:
JS开发常用工具函数(上)
前端开发常用JS功能函数(下)