在<script> tag?</script>的src属性中使用通配符

时间:2011-02-17 11:18:10

标签: javascript html wildcard script-tag

好的,愚蠢的问题,我不认为这是可能的,但是,我的.aspx页面顶部有这个标记......

<%--Third Party Libraries, Plugins, Extensions --%>
<script src="Libraries/Raphael/Raphael.js" type="text/javascript"></script>
<script src="AutoComplete/jquery.autocomplete.js" type="text/javascript"></script>    
<script src="Libraries/jQuery/1.4.2/jquery.js" type="text/javascript"></script>
<script src="Libraries/jQuery/UI/1.8.4/jquery.ui.core.js" type="text/javascript"></script>
<script src="Libraries/jQuery/UI/1.8.4/jquery.ui.widget.js" type="text/javascript"></script>
<script src="Libraries/jQuery/UI/1.8.4/jquery.ui.mouse.js" type="text/javascript"></script>
<script src="Libraries/jQuery/UI/1.8.4/jquery.ui.draggable.js" type="text/javascript"></script>
<script src="Libraries/jQuery/UI/1.8.4/jquery.ui.droppable.js" type="text/javascript"></script>    

如果我可以用这个替换它,那会不会很好......

<%--Third Party Libraries, Plugins, Extensions --%>
<script src="Libraries/Raphael/Raphael.js" type="text/javascript"></script>
<script src="AutoComplete/jquery.autocomplete.js" type="text/javascript"></script>    
<script src="Libraries/jQuery/1.4.2/jquery.js" type="text/javascript"></script>
<script src="Libraries/jQuery/UI/1.8.4/jquery.ui.*.js" type="text/javascript"></script>

即使用*作为通配符。

显然,因为这是JS,我可以将所有这些脚本放入一个大脚本并加载,但我真的不喜欢这样做。

其他人有整理大量脚本参考的技巧吗?或者我们只是忍受它?

6 个答案:

答案 0 :(得分:6)

据我所知,这是不可能的,因为浏览器需要准确知道要请求的文件。

浏览器基本上必须使用希望获得幸运的请求来强制您的服务器。

我建议使用Google的闭包编译器将所有类似的(如果不是全部)javascript文件合并到一个文件中。它会略大,但会减少http请求。

通过一些分析,您可以找到最常用的文件和速度之间的平衡。

更新(来自评论)

我一般不愿意提供添加新的javascript库来解决太多javascript库的问题:)此外,这似乎是更直接的解决方案。目前我们使用Google封闭API来压缩和合并我们所有的javascript和CSS,并使用ANT构建时间。有魅力。这也可以在某种程度上直接使用apache2虚拟主机/ htaccess(请参阅html5boilerplate.com)获取示例和限制

答案 1 :(得分:2)

不,不是你想的那样。如果您使用JavaScript加载器(例如RequireJSLabJS),可以执行类似的操作,因为您可以将每个文件压缩成一个数组并循环遍历它们,或者,如果你有野心勃勃在前后端做一些协议来支持这个。

尽管如此,不建议这样做,因为它不易维护。如果您将文件合并到一个文件中的问题是有效的,那么JS minifiers(例如UglifyJSClosure Compiler)可以解决您的问题。

答案 2 :(得分:2)

实际上,正如其他人可能提到的那样,您可以在其中添加自己的脚本文件,并执行类似添加数组路径的操作,循环调用每个项目getScript

$.getScript('ajax/test.js', function() {
    alert('Load was performed.');
});

答案 3 :(得分:1)

  

即使用*作为通配符。

没有。好吧,除非您想要将服务器配置为通过解析它的脚本传递包含*字符的URL,并将所有JS捆绑在一起。

  

显然,因为这是JS,我可以将所有这些脚本放入一个大脚本并加载,但我真的不喜欢这样做。

这是一个很好的解决方案。通常,您希望将此作为站点构建脚本的一部分,并同时调用minifier。

答案 4 :(得分:0)

我会省略type="text/javascript"

  

The "type" attribute is required in HTML 4, but optional in HTML5.

但我仍然认为合并src是不可能的(从HTML5和CSS3开始)

答案 5 :(得分:-1)

您可以将所有jquery.ui。*文件的内容复制到一个文件中。作为额外的奖励,您的页面加载速度会稍快一些。