CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Web 开发 >  JavaScript

在一个 js 文件中是否可以再包含另一个 js 文件?

楼主czjcsdn(葫芦)2006-10-23 14:16:34 在 Web 开发 / JavaScript 提问

问题如标题:  
   
          在一个   js   文件中是否可以再包含另一个   js   文件?  
   
  就象在   java   中可以用   import   的方式包含另一个类,但不知道   js   中是怎么弄的。  
   
  请指教,谢谢!  
  问题点数:20、回复次数:25Top

1 楼hansonboy(hansonboy)回复于 2006-10-23 14:38:38 得分 1

document.write('<script   src="test.js"></scri'   +   'pt>');Top

2 楼Amwpfiqvy(给我分吧,让我升仙)回复于 2006-10-23 14:38:58 得分 0

没有现成的方法,可以自定规则做一套类似的方案。Top

3 楼ecaros()回复于 2006-10-23 14:58:50 得分 0

我最近也遇到这个问题,欢迎交流!QQ:17766922Top

4 楼czjcsdn(葫芦)回复于 2006-10-24 10:21:34 得分 0

因为项目中用到的   js   较多,   就考虑写一个脚本库,   但脚本库中   js   文件多了以后,   可能就会存在互相引用的问题,   这个问题搞了很长时间了,   还是找不到方法解决.Top

5 楼meizz(梅花雪)回复于 2006-10-25 10:26:47 得分 0

我写了一个   javascript   framework   ,从系统级解决了此类问题!Top

6 楼liangxf0022(小新)回复于 2006-10-25 10:30:53 得分 1

动态加载JScript不是JavaScript完全可以实现。去看看prototype.js,会有启发的Top

7 楼meizz(梅花雪)回复于 2006-10-25 10:32:54 得分 3

prototype.js   的强项不是载入管理JS代码,它只是给了你一些基础的脚本库和类继承方法罢了Top

8 楼Godknow(没钱吃饭。。。)回复于 2006-10-25 15:05:53 得分 0

我写了一个   javascript   framework   ,从系统级解决了此类问题!  
  ——————————————————————————————————  
   
  我也写了一个耶,meizz(梅花雪)   你什么时候发布啊?Top

9 楼scsjs(闪电回归)回复于 2006-10-25 16:46:03 得分 0

写JS的东西,现在感觉很提不起干劲。  
   
  ...............   :<Top

10 楼czjcsdn(葫芦)回复于 2006-10-26 13:59:18 得分 0

prototype.js   是什么?请指教。Top

11 楼PleaseDoTellMeWhy(Allah bless you!)回复于 2006-10-26 14:02:55 得分 0

我看见那颗钻石就眼馋,梅前辈!Top

12 楼guyan999(微笑人生)回复于 2006-10-26 14:54:27 得分 5

js的动态引用方法:  
       
  function(jsSrc){  
      var   head=document.getElementsByTagName("head")[0];  
      var   scripts=head.getElementsByTagName("SCRIPT");  
      for(var   i=0;i<scripts.length;i++){  
      var   src=scripts[i].src;  
      if(src==jsSrc)   return   false;  
      }  
      var   script=document.createElement("SCRIPT");  
      script.language="javascript";  
      script.id=jsName;  
      script.src=jsSrc;  
      script.defer=true;  
      head.appendChild(script);  
      return   true;  
      }  
   
  不过在js里导入另外一个js文件后   不能无法立即使用第二个js的变量,必须延迟执行脚本语句   :)Top

13 楼czjcsdn(葫芦)回复于 2006-10-26 16:37:52 得分 0

meizz(梅花雪)    
  Godknow(没钱吃饭。。。)    
  能讲讲你们的framework的思路吗?我觉得“guyan999(深海)   ”的方式应该解决不了我的问题。Top

14 楼xdspower(杂食菜熊)回复于 2006-10-26 16:52:26 得分 5

我觉得这个不是重要的问题,主要是因为javascript本身就是一种比较随意的语言,而且大多用于一些较小的范围,没有充分考虑重用问题,造成编码中不规范,容易造成命名冲突等等很多问题。  
  如果是你自己要用于比较复杂的应用,一开始就定好规范就可以较好的自己创作出一套方便的库来使用了。  
  你想一下如果没有上面提到的规范的建立,你随意的引入其他文件还是很危险的行为,毕竟在Html文件中引入js的时候都是在顶层框架中引入,所有js定义的全局变量等等都是通用的,你就是在js文件中引入js文件还是避免不了这个问题。  
  java可以通过import引入主要的还是系统提供的库部分,而不是随便的什么文件啊,其他脚本语言比如python等的文件引入也是要注意这样的问题的。  
  综述一下,就是你需要有完善的规范,我想这也是meizz(梅花雪)的javascript   framework   的能够建立的基础。  
  Top

15 楼xdspower(杂食菜熊)回复于 2006-10-26 17:02:19 得分 0

再回到楼主迫切的问题上,有了前文的理论基础,其实你在Html来引入多个js文件和js引入js就没有什么区别了。你完善了js框架后,需要使用某个文件就在html中引入,然后在后面的js文件中像本身内容一样接着使用就好了,当然,你其实在后面的使用中还是要注意名字空间等等问题的,也就是不能影响到原有框架(这个是起码的条件)。  
  对于框架的建立,其实可以仿照js默认框架,进行多层次的包装归类,比如实现算法的归于一类,实现接口的归于一类等等(这句仅仅是表达一个意思,你不会照着作吧!),然后起一个方便记忆,有唯一的名字来标识。  
  对于具体的应用,你选定一个好的命名规范基本上就够了。Top

16 楼czjcsdn(葫芦)回复于 2006-10-27 11:16:53 得分 0

xdspower()    
  多谢。  
  你所说的和我本来的基本思路差不多,但我有另一个原因导致有我现在的这种需求。  
  我现在忙,稍后再来发贴。  
  再次感谢。Top

17 楼meizz(梅花雪)回复于 2006-10-27 12:55:57 得分 5

不错,xdspower   把原理讲得非常的透彻。写   framework   的目的就是为了模块化每一个JS脚本组件,动态载入,统一管理。我实现了   namespace   的模式,可以解决同名模块的冲突问题。至于guyan999(深海)   所说的不能“立即”使用载入的JS脚本问题我也已经解决了。可以给你一个片断:  
   
  <script   src="ui/scripts/jsframework.js"></script>  
  <script   src="ui/scripts/jsframework.js">/*<![CDATA[*/  
  Using("System.Web.UI.WebControls.MzTreeView");  
  var   a   =   new   MzTreeView();  
  a.dataSource={"-1_1":   "text:   CSDN社区起始点;   JSData:   communitytree.js"};  
  a.useCheckbox=true  
  document.write(a.render());  
  a.expandLevel(1);  
  /*]]>*/</script>  
   
  这就是我现在写的树控件在HTML网页里加载的所有代码。Top

18 楼lurkerxh(lurkerxhxh)回复于 2006-10-27 21:45:58 得分 0

通过XMLHttpRequest传送js代码,真强啊!Top

19 楼Eilien(我要成长,我正在成长,)回复于 2006-10-28 11:49:52 得分 0

我的天呐,全看不懂,做个mark..  
   
  以后再来做.Top

20 楼czjcsdn(葫芦)回复于 2006-10-30 10:34:50 得分 0

我的意思是这样:  
   
  javascript|  
                      |--utils|  
                      |               |--string.js  
                      |               |--number.js  
                      |               |--......  
                      |--controls|  
                      |                     |--textbox.js  
                      |                     |--listbox.js  
                      |                     |......  
                      |--......  
   
  我建立了一个类似上面结构的js库,每个js文件中包含了相应的一组操作功能,比如listbox.js中包括了添加、删除、清空、移动各选项等功能,string.js包括了javascript没有提供了,但又是我自己所需要的一些字符串处理的功能。  
  但有时可能会需要在listbox.js中调用string.js的某一个函数功能(这只是一个举例),如果有了类似于java中的import的功能的话,那实现起来就方便多了,但问题是没有这项功能。  
   
  我这样算是说清楚了吗?  
   
  我是用.NET开发网站程序的,虽然有了这些js库,在<head></head>段中编写js时可以方便一些,但出于各方面考虑,不希望把代码写在<head></head>中,而希望能写在一个单独的js文件中然后在<head></head>段的<script   ......></script>中调用,比如:  
   
  Login.aspx调用login.js  
  CheckUser.aspx调用checkuser.js  
   
  我个人认为,这也是系统模块文化的一种方式,虽然可能没这种必要,但在一个页面中,如果js代码很多的话(比如有个七八十行,甚至更多),那我觉得就很有用了。  
   
  但这样就造成我希望在login.js和checkuser.js中想调用string.js和number.js中的功能就不知道该怎么调用。  
   
  我想我应该是说清楚我的意图了,我自己考虑了很长时间,始终没有找到好的方法。因此在这里发出这个贴子,希望大家能讨论一下。  
   
  有空再来讨论。  
  Top

21 楼Amwpfiqvy(给我分吧,让我升仙)回复于 2006-10-30 10:36:57 得分 0

大家回答的就是你这种情况的解决方案,看来你没看懂老大们的回复。Top

22 楼czjcsdn(葫芦)回复于 2006-10-30 10:37:04 得分 0

把js库的结构大概的样式再贴一下  
  javascript|  
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|--utils|  
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|--string.js  
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|--number.js  
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|--......  
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|--controls|  
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|--textbox.js  
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|--listbox.js  
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|......  
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|--......Top

23 楼czjcsdn(葫芦)回复于 2006-10-30 10:39:05 得分 0

显示不对,再贴一遍,再不对也不贴了,希望大家能理解我的意思。  
  javascript|  
       |--utils   |  
       |    |--string.js  
       |    |--number.js  
       |    |--......  
       |--controls|  
       |     |--textbox.js  
       |     |--listbox.js  
       |     |......  
       |--......Top

24 楼czjcsdn(葫芦)回复于 2006-10-30 10:39:40 得分 0

好,对了,就是这样类似的结构。Top

25 楼guyan999(微笑人生)回复于 2006-11-02 10:08:59 得分 0

meizz(梅花雪)   你能不能具体说说怎么解决的,或者给我看看具体的加载代码?  
      我写了一个类似ZK的ajax框架,其中也包括了一套client的framework,但是在动态导入js上遇到问题,只好采取延迟加载的方式Top

相关问题

关键词

得分解答快速导航

  • 帖主:czjcsdn
  • hansonboy
  • liangxf0022
  • meizz
  • guyan999
  • xdspower
  • meizz

相关链接

  • Web开发类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo