6

我的所有网页都有三个 js 文件,并且我有预定义的函数集来调用每个网页。我可以将所有这些函数移动到一个新的 js 文件中,然后调用另一个 js 文件中的其他函数吗?我在http://code.google.com/p/rloader/阅读了有关 rloader 的信息,但我不确定是否可以使用它。

<script src="js/rootNameSpace.js"></script>
<script src="js/jquery-min.js"></script>
<script src="js/ui.js"></script>
<script src="js/form.js"></script>

<script type="text/javascript">
    console.dir(com);
    com.rela.form.helloWorld1();
    com.rela.form.helloWorld2();
</script>
4

3 回答 3

1

是的。如果将脚本标记的内容移动到路径为“js/main.js”的文件中,然后添加脚本

<script src="js/main.js"></script>

在其他脚本之后,它将能够调用函数。包含一个外部脚本相当于将该脚本中的文本内联到文件中。

脚本可以读取先前脚本的内容,因此页面上有多个脚本类似于将它们全部连接到一个文件中,这意味着如果您在其他脚本下方添加一个脚本,它将能够“看到”其他脚本中的所有内容

关于rloader的问题

rloader 会在需要时进行延迟加载以拉入脚本。

有关延迟加载的更多信息,您可以从其网站 了解rloader (我不是这方面的专家)

如果您真的在一页上只有 4 个脚本,那么我不建议您使用 rloader。它的矫枉过正。如果您打算拥有一个更大的项目,那么您可以使用它或更流行的requirejs来跨页面管理您的脚本。

于 2013-02-28T14:14:32.227 回答
0

将代码放在单独的文件中总是更好(只要它们的大小和数量较少)。这将允许浏览器缓存$(document).ready 将使您对其他未加载的 dom 元素保持安全。

创建这样的东西:

<script src="js/rootNameSpace.js"></script>
<script src="js/jquery-min.js"></script>
<script src="js/ui.js"></script>
<script src="js/form.js"></script>

<script src="js/pages/some-page.js"></script>

一些页面.js

$(document).ready(function(){
    console.dir(com);
    //call to function form.helloWorld1 
    com.relais.form.helloWorld1();
    com.relais.form.helloWorld2();
});

更好的选择是合并文件(如果它们在每个页面上都很常见)。rootNameSpace.js、jquery-min.js、ui.js、form.js 放到一个文件中说common.js。你可以使用Google Closure来做到这一点。

<script src="js/common.js"></script>
<script src="js/pages/some-page.js"></script>
于 2013-02-28T14:22:35.113 回答
0

如果你有动态生成的页面,你可以有不同的名称/动作/控制器。那么你就可以

echo '<script type="text/javascript">$(document).ready(function(){'.$page_name.'();});</script>';

然后您可以在任何 JS 文件中声明全局函数,是的,您可以拥有任意数量的 JS 文件,并以您想要的任何方式拆分,它们都是全局的。

function name1(){...};

如果您有一个包含许多 JS 文件的大型应用程序,您可以在单个文件夹中拆分为更多文件,然后添加一个缩小插件以将它们“收集”到单个输出文件(或 JS 构建器)中。

rloader 是一个动态加载脚本,基本上是在你的文档中注入 JS 文件(http://ntt.cc/2008/02/10/4-ways-to-dynamically-load-external-javascriptwith-source.html)。我不建议使用它,除非您有一个非常大的应用程序并使用加载的 MVC http://coding.smashingmagazine.com/2012/07/27/journey-through-the-javascript-mvc-jungle/仅当前模块。

于 2013-02-28T14:22:48.210 回答