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

czjcsdn 2006-10-23 02:16:34
问题如标题:

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

就象在 java 中可以用 import 的方式包含另一个类,但不知道 js 中是怎么弄的。

请指教,谢谢!
...全文
1565 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
96Code 2006-11-02
  • 打赏
  • 举报
回复
meizz(梅花雪) 你能不能具体说说怎么解决的,或者给我看看具体的加载代码?
我写了一个类似ZK的ajax框架,其中也包括了一套client的framework,但是在动态导入js上遇到问题,只好采取延迟加载的方式
czjcsdn 2006-10-30
  • 打赏
  • 举报
回复
好,对了,就是这样类似的结构。
czjcsdn 2006-10-30
  • 打赏
  • 举报
回复
显示不对,再贴一遍,再不对也不贴了,希望大家能理解我的意思。
javascript|
     |--utils |
     |    |--string.js
     |    |--number.js
     |    |--......
     |--controls|
     |     |--textbox.js
     |     |--listbox.js
     |     |......
     |--......
czjcsdn 2006-10-30
  • 打赏
  • 举报
回复
把js库的结构大概的样式再贴一下
javascript|
          |--utils|
          |        |--string.js
          |        |--number.js
          |        |--......
          |--controls|
          |        |--textbox.js
          |        |--listbox.js
          |        |......
          |--......
Apq001 2006-10-30
  • 打赏
  • 举报
回复
大家回答的就是你这种情况的解决方案,看来你没看懂老大们的回复。
czjcsdn 2006-10-30
  • 打赏
  • 举报
回复
我的意思是这样:

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中的功能就不知道该怎么调用。

我想我应该是说清楚我的意图了,我自己考虑了很长时间,始终没有找到好的方法。因此在这里发出这个贴子,希望大家能讨论一下。

有空再来讨论。
Eilien 2006-10-28
  • 打赏
  • 举报
回复
我的天呐,全看不懂,做个mark..

以后再来做.
meizz 2006-10-27
  • 打赏
  • 举报
回复
不错,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网页里加载的所有代码。
czjcsdn 2006-10-27
  • 打赏
  • 举报
回复
xdspower()
多谢。
你所说的和我本来的基本思路差不多,但我有另一个原因导致有我现在的这种需求。
我现在忙,稍后再来发贴。
再次感谢。
lurkerxh 2006-10-27
  • 打赏
  • 举报
回复
通过XMLHttpRequest传送js代码,真强啊!
xdspower 2006-10-26
  • 打赏
  • 举报
回复
再回到楼主迫切的问题上,有了前文的理论基础,其实你在Html来引入多个js文件和js引入js就没有什么区别了。你完善了js框架后,需要使用某个文件就在html中引入,然后在后面的js文件中像本身内容一样接着使用就好了,当然,你其实在后面的使用中还是要注意名字空间等等问题的,也就是不能影响到原有框架(这个是起码的条件)。
对于框架的建立,其实可以仿照js默认框架,进行多层次的包装归类,比如实现算法的归于一类,实现接口的归于一类等等(这句仅仅是表达一个意思,你不会照着作吧!),然后起一个方便记忆,有唯一的名字来标识。
对于具体的应用,你选定一个好的命名规范基本上就够了。
xdspower 2006-10-26
  • 打赏
  • 举报
回复
我觉得这个不是重要的问题,主要是因为javascript本身就是一种比较随意的语言,而且大多用于一些较小的范围,没有充分考虑重用问题,造成编码中不规范,容易造成命名冲突等等很多问题。
如果是你自己要用于比较复杂的应用,一开始就定好规范就可以较好的自己创作出一套方便的库来使用了。
你想一下如果没有上面提到的规范的建立,你随意的引入其他文件还是很危险的行为,毕竟在Html文件中引入js的时候都是在顶层框架中引入,所有js定义的全局变量等等都是通用的,你就是在js文件中引入js文件还是避免不了这个问题。
java可以通过import引入主要的还是系统提供的库部分,而不是随便的什么文件啊,其他脚本语言比如python等的文件引入也是要注意这样的问题的。
综述一下,就是你需要有完善的规范,我想这也是meizz(梅花雪)的javascript framework 的能够建立的基础。
czjcsdn 2006-10-26
  • 打赏
  • 举报
回复
meizz(梅花雪)
Godknow(没钱吃饭。。。)
能讲讲你们的framework的思路吗?我觉得“guyan999(深海) ”的方式应该解决不了我的问题。
96Code 2006-10-26
  • 打赏
  • 举报
回复
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的变量,必须延迟执行脚本语句 :)
PleaseDoTellMeWhy 2006-10-26
  • 打赏
  • 举报
回复
我看见那颗钻石就眼馋,梅前辈!
czjcsdn 2006-10-26
  • 打赏
  • 举报
回复
prototype.js 是什么?请指教。
meizz 2006-10-25
  • 打赏
  • 举报
回复
prototype.js 的强项不是载入管理JS代码,它只是给了你一些基础的脚本库和类继承方法罢了
liangxf0022 2006-10-25
  • 打赏
  • 举报
回复
动态加载JScript不是JavaScript完全可以实现。去看看prototype.js,会有启发的
meizz 2006-10-25
  • 打赏
  • 举报
回复
我写了一个 javascript framework ,从系统级解决了此类问题!
玄之丞 2006-10-25
  • 打赏
  • 举报
回复
写JS的东西,现在感觉很提不起干劲。

............... :<
加载更多回复(5)

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧