仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 924|回复: 8
打印 上一主题 下一主题

[学习教程] ASP.NET教程之JS完成完善include加载功效代码

[复制链接]
灵魂腐蚀 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:21:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
呵呵,那你就关注微软的招聘信息以及别人的招聘经验啊,还有也不一定去做技术的,你如果真的想去就多了解了解。(其实我的意思是说想到微软做技术是很不容易的。js为何必要include?让我们想一想如许1个场景,a.js必要用到1个公用的common.js,固然你能够在用到a.js的页面利用<scriptsrc="common.js">,但假定有5个页面用到了a.js,你是否是要写5遍<script。并且如果今后a.js又必要援用common2.js,你是否是又的修正5个页面了?

已有jsinclude的一些成绩
  在写这个之前在网上搜刮了些材料,发明之前写的include都存在2个成绩,这也是include必要办理的对照主要的2个成绩。
  1、绝对路径的成绩:在a.js中利用include("../js/common.js");include函数中一定是利用绝对路径,是绝对a.js的路径。而a.js在html中利用<script>嵌进有多是绝对路径,有多是相对路径。include函数怎样才干真准确定common.js的相对路径,大概是绝对html的绝对路径。网上一些为懂得决这个成绩,还必要加一些js变量,不便利。
  2、援用的成绩。网上include函数的完成几近都是利用上面2种体例拔出common.js
      document.write("<scriptsrc="+..+"></script>")
    大概
      vars=document.createElement("script");
      s.src=...;
      head.insertAfter(s,...);
    document.write输入的剧本会在a.js前面加载,而createElement("script")创立的剧本长短堵塞加载。以是假如在common.js加载终了之前,a.js中挪用了common.js的函数就会报错。

完成
  办理下面2个成绩,就能够完成jsinclude。
  第1个成绩,我的办法是先猎取到a.js在html中的相对路径(假如是绝对路径,就转为相对路径),然后再把common.js的路径转为相对路径。
  第2个成绩,接纳同步的ajax来哀求common.js,如许就不会呈现援用成绩。

  完成代码以下:
复制代码代码以下:
//依据绝对路径猎取相对路径
functiongetPath(relativePath,absolutePath){
varreg=newRegExp("../","g");
varuplayCount=0;//绝对路径中前往下层的次数。
varm=relativePath.match(reg);
if(m)uplayCount=m.length;
varlastIndex=absolutePath.length-1;
for(vari=0;i<=uplayCount;i++){
lastIndex=absolutePath.lastIndexOf("/",lastIndex);
}
returnabsolutePath.substr(0,lastIndex+1)+relativePath.replace(reg,"");
}
functioninclude(jssrc){
//先猎取以后a.js的src。a.js中挪用include,间接猎取最初1个script标签就是a.js的援用。
varscripts=document.getElementsByTagName("script");
varlastScript=scripts[scripts.length-1];
varsrc=lastScript.src;
if(src.indexOf("http://")!=0&&src.indexOf("/")!=0){
//a.js利用绝对路径,先交换成相对路径
varurl=location.href;
varindex=url.indexOf("?");
if(index!=-1){
url=url.substring(0,index-1);
}
src=getPath(src,url);
}
varjssrcs=jssrc.split("");//能够include多个js,用离隔
for(vari=0;i<jssrcs.length;i++){
//利用juqery的同步ajax加载js.
//利用document.write静态增加的js会在以后js的前面,大概会有js援用成绩
//静态创立script剧本,长短堵塞下载,也会呈现援用成绩
$.ajax({type:GET,url:getPath(jssrc,src),async:false,dataType:script});
}
}

在a.js中间接利用include("../js/common.js");

多哀求的成绩
  利用下面的include看上往挺爽的,不外却带来别的1个严峻的成绩,就是多发送了1个ajax的哀求。
  我们经常为了WEB功能,而兼并js,削减哀求。但利用include后却恰恰多了哀求。假如这个成绩不办理,信任良多人都不会在正式产物中利用include的了,除非是局域网产物。

  怎样办理这个多哀求的成绩,我也思索好久,最初觉的单单利用客户端js是没举措办理了。以是就想到了利用服务端代码来办理
  还记的我之前有文章先容"js、CSS的兼并、紧缩、缓存办理"的时分,就经由过程服务器端代码在程序启动时分往兼并js。

  以是我把include多哀求的办理计划也加到内里往。就是在程序启动的时分往查找一切的js,发明有利用include的就把include中common.js的源代码交换该include函数。如许a.js中在运转的时分就没有include函数,而是真真包括了common.js的内容的js文件

后语
  丫的。说到最初,怎样又把一切的include都交换失落了,哪之前说的那末多不白说了。

  团体以为,每一个产物都应当要辨别开辟情况和产物情况(一样平常经由过程设置文件举行辨别),在开辟情况应当以开辟效力为主要,而产物情况则以功能为首。以是这里的inlcude就应当要辨别看待,在开辟情况中利用jsinclude来进步开辟和保护效力,而在产物情况中则主动把一切include交换成真真的js文件的内容。

  都说完了,接待人人拍砖会商。
[作者]:BearRui(AK-47)
[博客]:http://www.ckuyun.com/BearsTaR/java的设计机制:首先产生一个中间码,第二部编译为本地(机器)码。这个机制有很大的缺点。
小魔女 该用户已被删除
沙发
发表于 2015-1-19 09:13:35 | 只看该作者
关于ASP.NET功能上,ASP.NET比微软以前的ASP(96年出现)有更强大的library,更好的稳定性。ASP.NET可以使用.NETFramework中所有组件(也就是说.NET能实现的,ASP.NET一样能实现)。
第二个灵魂 该用户已被删除
板凳
发表于 2015-1-28 06:02:14 | 只看该作者
我觉得什么语言,精通就好,你要做的就是比其他80%的人都厉害,你就能得到只有20%的人才能得到的高薪。
小女巫 该用户已被删除
地板
发表于 2015-2-5 18:48:40 | 只看该作者
关于ASP.NET功能上,ASP.NET比微软以前的ASP(96年出现)有更强大的library,更好的稳定性。ASP.NET可以使用.NETFramework中所有组件(也就是说.NET能实现的,ASP.NET一样能实现)。
不帅 该用户已被删除
5#
发表于 2015-2-13 06:34:58 | 只看该作者
能产生和执行动态、交互式、高效率的站占服务器的应用程序。运用ASP可将VBscript、javascript等脚本语言嵌入到HTML中,便可快速完成网站的应用程序,无需编译,可在服务器端直接执行。容易编写。
只想知道 该用户已被删除
6#
发表于 2015-3-3 17:48:00 | 只看该作者
ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp)。
因胸联盟 该用户已被删除
7#
发表于 2015-3-11 12:39:35 | 只看该作者
逐步缩小出错代码段的范围,最终确定错误代码的位置。
若天明 该用户已被删除
8#
发表于 2015-3-18 18:21:57 | 只看该作者
逐步缩小出错代码段的范围,最终确定错误代码的位置。
柔情似水 该用户已被删除
9#
发表于 2015-3-26 13:57:41 | 只看该作者
当然我们在选择Asp.net主机是,除了要考虑服务提供商在版本是否是实时更新以外,机房的环境和配置也是非常重要的,通常选择骨干网的机房,在速度和稳定性上会非常有保证。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-5 17:43

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表