我的所有网页都有三个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>
答案 0 :(得分:1)
是。如果将脚本标记的内容移动到路径为“js / main.js”的文件,然后添加脚本
<script src="js/main.js"></script>
在其他脚本之后,它将能够调用这些函数。包含外部脚本相当于将该脚本中的文本内联在文件中。
脚本可以读取以前脚本的内容,因此页面上有多个脚本类似于将它们连接成一个文件,这意味着如果在其他脚本下面添加脚本,它将能够“看到”所有内容在其他人
rloader在您需要时执行延迟加载以拉入脚本。
有关lazy loading的更多信息 你可以了解rloader from its site(我不是那么专家)
如果你真的只有一个页面上有4个脚本,我不推荐使用rloader。它的矫枉过正。如果您计划有一个更大的项目,那么您可以使用它或更受欢迎的requirejs来跨页面管理您的脚本。
答案 1 :(得分:0)
将代码放在单独的文件中总是更好(只要它们的大小和数量较少)。 这将允许通过浏览器进行缓存 $(文档).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>
<强>一些-page.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>
答案 2 :(得分:0)
如果您有动态生成的页面,则可以使用不同的名称/操作/控制器。 那你可以
echo '<script type="text/javascript">$(document).ready(function(){'.$page_name.'();});</script>';
然后你可以在任何JS文件中声明全局函数,是的,你可以拥有任意数量的JS文件,并以任何你想要的方式分割,它们都是全局的。
function name1(){...};
如果您有一个包含许多JS文件的大型应用程序,您可以将其拆分为更多文件,在一个文件夹中,然后添加一个minify插件以在单个输出文件(或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/。