日期:2014-05-16  浏览次数:20318 次

关于js按需加载的依赖问题(续)

? 在js按需加载问题解决以后,还有一个最大的问题,就是js的路径问题,由于在项目中封装了好多自己的插件,在插件中是按需加载js和css,因此加载插件时,只需要直接调用插件的方法,而不用关心插件所需要的js和css文件,相信大家在每次开发的时候为不同页面引入插件的js和css而感到无比厌烦,笔者也感到了这种令人恶心的整天引入插件的css与js。

? 1.?现在有一个tree插件需要引入,首先笔者在公用库common.js里定义一个方法

function tree(settings){
  loadScript(['js/tree.js'],function(){}{
  loadCss(['css/tree.css']);
  return new relTree(settings); //这里的relTree是真正的插件初始化,而自己的tree只是对其进行封装
});
}

?2.然后,就可以在各个页面去引入这个common.js,直接使用tree,但是明眼人,一眼就看出来,这个tree加载的js根据页面路径是不同的,有可能导致加载不上,那怎么办

3.在top页面写这么一段

var div = document.createElement('div');

div.innerHTML = '<a href="./"></a>';

top.window.baseUrl = div.firstChild.href; //获取此文件的根目录,然后赋top.window.baseUrl,在以后加载js时可以使用绝对路径加载

?

div = null;

如此的话,将给予top.window一个全局变量baseUrl,这个baseUrl是这个项目的根目录地址,

然后在loadScript的时候使用top.window.baseUrl+js的路径,就可以直接获取js的绝对地址了,如此的话在不同页面使用common.js中的tree就不会出现js加载不进来了,虽然使用了一个全局变量,但是丝毫不影响我们项目。