西红柿爱番茄

Feed Rss

美化按需加载js文件的形式

07.03.2011, Javascript, 代码设计, by .

按需加载,顾名思义就是在用户需要这个功能的时候就初始化这个功能,加载相关的脚本和样式文件等等。普通我们使用的方式,就是在需要的时候,就添加一个文件的url进行加载,并且用一个对象来记录已经加载过的文件。这种方式有些散乱,对于是随意加载的,那倒是不可避免,但是对于一个项目来说,页面的的功能和相应的文件是确定的,那么还是使用上面的方式的话,那么在后期的维护上会比较混乱,增加了成本。

对项目之外的文件加载,使用普通的方式散乱在代码中,也不太合适,那么就需要一个封装的加载器,统一加载文件的接口和调用方式。我下面将要讲的“加载器”,不是传说中的模块化中的加在方式,我更多的是从代码维护方面来考虑,使得一目了然的看到页面本身的功能需要按需加载一些什么文件列表,并且可以标记已经加载的文件,而不会使得url散乱在页面中。

//需要按需加载的内部文件列表映射
mis.classFiles = {
  'AjaxEvent': 'includes/ajax.lib.js',
  'AjaxRequest': 'includes/request.lib.js',
  'colorFade': 'includes/effects.lib.js'
}

//标记已经include的内部文件
mis.includedFiles = {};

//对内的文件加载
mis.include = function(classname,callback){
  if(mis.includedFiles[classname]){
    callback && callback();
	  return true;
  }else if(mis.classFiles[classname]){
	  return mis.loadJavaScript(mis.classFiles[classname],callback);
  }else{
	  return false;
  }
}

//标记已经load的内部和外部文件
mis.loadedJavaScript = {}

//无限制的加载file文件
mis.loadJavaScript = function(file,callback){
  callback = callback || function(){};
  if(mis.loadedJavaScript[file]){
	  callback(true);
	  return true;
  }else{
	  var head = document.getElementsByTagName("head")[0];
	  var script = head.appendChild(document.createElement("script"));

    script.onload = script.onreadystatechange = function(){
		  if((!/*@cc_on!@*/0) || (/loaded|complete/).test(script.readyState)){
        script.onreadystatechange = null;
	      mis.loadedJavaScript[file] = true;
	      callback(true);
		  }
	  }

	  script.src = file;
	  return true;
  }
}

代码上没啥技巧,只是让它看起来更直观了点而已。

美化按需加载js文件的形式 有 2 条回应

  1. 可否请教下,域名是怎么申请的啊?我是刚毕业的新手,也想搞个自己的博客,写些平时的收获、。、谢谢

  2. 博客,你的订阅订阅不了了

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>