seajs使用小结(三)

上回书说到,当老系统中设置过seajs.config中的paths,而后续新增代码受到了paths的影响时怎么办呢?

比如如下代码:

        seajs.config({
            paths: {
                'js': 'xxxxxxx/xxxxx'
            },
            alias: {
                'a': 'js/a.js'
            }
        });

        seajs.use('a');


这样a模块的js引入路径就变成了xxxxxxx/xxxxx/js/a.js。那么在不改动原有paths的情况下,我们如何按照想要的路径加载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的源码。


你可能感兴趣的:(seajs)