? 在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加载不进来了,虽然使用了一个全局变量,但是丝毫不影响我们项目。