上回书说到,当老系统中设置过seajs.config中的paths,而后续新增代码受到了paths的影响时怎么办呢?
比如如下代码:
seajs.config({
paths: {
'js': 'xxxxxxx/xxxxx'
},
alias: {
'a': 'js/a.js'
}
});
seajs.use('a');
可以使用'/js/a.js'来进行加载,因为paths对alias的解析代码是不会为最前端有‘/’的路径进行配置的。
这里就有必要看一看seajs是怎么处理路径的了,处理URI路径的代码如下,
function id2Uri(id, refUri) {
if (!id) return ""
id = parseAlias(id)
id = parsePaths(id)
id = parseAlias(id)
id = parseVars(id)
id = parseAlias(id)
id = normalize(id)
id = parseAlias(id)
var uri = addBase(id, refUri)
uri = parseAlias(uri)
uri = parseMap(uri)
return uri
}
可以看到这里会先解析alias,然后使用paths对alias进行拼装,再使用vars对alias进行处理,最后为uri进行base处理。
具体处理过程,这里就不赘述了,各位看官可以去参看一下seajs的源码。