JS 实现完美include

本文介绍了JavaScript中实现类似PHP的include功能,以解决多个页面共用同一脚本的问题。讨论了现有实现中相对路径、引用问题,并提出解决方案,包括通过获取当前脚本路径确定相对路径,以及使用同步AJAX请求确保脚本按序加载。同时,针对增加HTTP请求影响性能的问题,提出了结合服务器端代码在产品环境中预合并js的策略,以平衡开发效率和产品性能。
摘要由CSDN通过智能技术生成
               

转载于:https://www.cnblogs.com/BearsTaR/archive/2010/08/05/js_include.html 

js为什么需要include?让我们想想这样1个场景,a.js 需要用到1个公用的common.js,当然你可以在用到a.js的页面使用<script src="common.js">,但假设有5个页面用到了a.js,你是不是要写5遍<script。而且要是以后a.js 又需要引用common2.js,你是不是又的修改5个页面了?

 

已有js include的一些问题

    在写这个之前在网上搜索了些资料,发现以前写的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("<script src='" + .. + "></script>")  

    或者    

      var s = document.createElement("script");    

      s.src = ...;    

      head.insertAfter(s,...);    

    document.write 输出的脚本会在a.js后面加载,而createElement("script")创建的脚本是非阻塞加载。  所以如果在common.js加载完毕之前,a.js中调用了common.js的函数就会报错。

 

实现

     解决上面2个问题,就可以实现js include。  

   第1个问题,我的方法是先获取到a.js在html中的绝对路径(如果是相对路径,就转为绝对路径),然后再把common.js的路径转为绝对路径。  

   第2个问题,采用同步的ajax来请求common.js,这样就不会出现引用问题。

 

  实现代码如下:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值