我最近阅读了有关最佳实践的 jQuery 教程。 我通常从一个名为 global 的 js 文件运行所有函数,但文章建议不要这样做。 下面是应该与内联 JavaScript 一起使用的代码,在需要该功能的页面上调用:
<script type="text/javascript>
mylib.article.init();
</script>
我不明白的是下面的代码。 该教程没有涉及任何细节;它在做什么?
var mylib =
{
article_page :
{
init : function()
{
// Article page specific jQuery functions.
}
},
traffic_light :
{
init : function()
{
// Traffic light specific jQuery functions.
}
}
}
基本上,您正在设置一个名称空间“mylib”,所有自定义代码都驻留在其中。
您不想要所有全局变量的原因是它们可能会被其他包含的库覆盖或重新分配,而您甚至不知道它发生了。
您将拥有一个本质上名为“mylib.count”的变量,而不是一个名为“count”的变量,该变量不太可能存在于其他地方。
在您提供的代码中,您将通过调用“mylib.article_page.init()”来初始化文章页面。 你也可以做这样的事情:
with (mylib){
article_page.init()
}
这个想法是,如果你不需要使用一组特定的函数,那么它们就不必被解释......当你调用 init 函数时,它会找到这些函数定义,你将能够引用它们,但如果您跳过调用 init,javascript 就不需要跟踪这些函数,从而提高性能。我不确定这是特别好的做法,似乎您可以将库分离到单独的文件中,然后如果您不使用这些函数,则不包含 .js 文件。
我读过那个教程。我不认为他们建议您不要将所有函数放入全局脚本中......只是您不要将它们全部包装在 document.ready 函数中。
他们的观点是每次页面加载时都必须搜索所有元素;即使它们不存在或该页面不需要。
而在您上面发布的示例中,情况并非如此。