javascript“包含”策略

时间:2008-11-25 01:02:33

标签: javascript

重复: Use javascript to inject script references as needed?

Javascript没有任何指令“包含”或“导入”另一个js文件。 这意味着如果script1.js使用script2.js中定义的函数/对象,那么包含script1.js的每个html页面都必须包含script2.js。

如果您只有10个html页面中的2个js文件,这应该不是一个大问题。我的意思是,它可以管理!

但突然说你改变了script1.js并通过使用新文件script3.js中定义的函数/对象来改进它 问题是,您不能告诉script1.js包含script3.js,而是必须记住包含script1.js的每个html文件,并将其更新为包含script3.js as井!

这似乎是组织代码的相当愚蠢的方式。

是否有建议的策略或做法来处理此问题?

拥有一个拥有您在网站上使用的所有功能的巨大js文件是否可以接受?

4 个答案:

答案 0 :(得分:2)

答案 1 :(得分:1)

Scriptaculous(可能还有其他框架)通过在加载文档时将包含文件的脚本标记写入文档来处理此问题。下面是scriptaculous.js文件中的相关位,它允许在框架中加载其他文件。

 var Scriptaculous = {
   Version: '1.8.2',
   require: function(libraryName) {
     // inserting via DOM fails in Safari 2.0, so brute force approach
     document.write('<script type="text/javascript" src="'+libraryName+'"><\/script>');
   },
   ...

答案 2 :(得分:0)

我个人试图通过将所有的javascript滚动到一个文件来避免所有这些混乱。如果有一个页面需要很多其他页面不需要的javascript,那么只需要两个文件 - 通常可以在通用js之后加载特定于页面的JS而不用麻烦。

要将JS文件合并为一个,我使用Dean Edwards的Javascript Packer,并结合我在blog上描述的帮助脚本。它使得处理许多JS文件变得更容易(至少对我来说),并且从打包javascript中获得的压缩效果更好。

答案 3 :(得分:-1)

我想你可以在你的JS文件中使用document.write来确保它们包含它们所依赖的依赖项,尽管我不会真的推荐它......