/** * 解析表达式中${param}格式的参数 * @param {*} exp 表达式 * @param {*} ctx 参数值 * @returns 解析后的表达式 */ export const parseExp = (exp, ctx) => { if (!exp || exp.constructor != String) return exp ctx = ctx || {} var reg = /(\$\{(\w+)\})/, match = null, count = 0 while ((match = reg.exec(exp))) { count++ // 避免死循环 if (count > 999) { break } if (match != null) { exp = exp.replace( match[1], ctx.hasOwnProperty(match[2]) ? ctx[match[2]] : '' ) } } return exp } // 解析URL地址,如果url地址包含了${form}这样的占位符,会按照config.js中配置的对应服务的地址替换。 export const parseUrl = (url) => { if (url === '') return var ctx = window.context, reg = /^(\$\{(\w+)\})\/.*$/ var match = reg.exec(url) if (match != null) { var name = match[2], mc = match[1], val = ctx[name] if (!val) { throw new Error( `The '${name}' in url:${url} does not defined in context provider.` ) } return url.replace(mc, val) } else { return url } }