重复: 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文件是否可以接受?
答案 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来确保它们包含它们所依赖的依赖项,尽管我不会真的推荐它......