我最近阅读了一篇关于最佳实践的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.
}
}
}
答案 0 :(得分:2)
基本上,您正在设置名称空间“mylib”,其中包含所有自定义代码。
你不想要所有全局变量的原因是它们可能被其他包含的库覆盖或重新分配,你甚至不知道它发生了。
不是有一个名为'count'的变量,而是一个基本上命名为'mylib.count'的变量,它不太可能存在于其他地方。
在您提供的代码中,您可以通过调用'mylib.article_page.init()'来初始化文章页面。你也可以这样做:
with (mylib){
article_page.init()
}
答案 1 :(得分:1)
为了更好地理解您引用的代码的语法,JSON教程可能会有所帮助。
答案 2 :(得分:0)
这个想法是,如果你不需要使用一组特定的函数,那么它们就不必被解释......当你调用init函数时,它会找到那些函数定义,你会能够引用它们,但是如果你跳过调用init javascript则不需要跟踪这些函数,从而提高性能。我不确定这是一个特别好的做法,似乎你可以将库分离成单独的文件,然后如果你没有使用这些函数就不包括.js文件。
答案 3 :(得分:0)
我读了那个教程。我不认为他们建议您不要将所有函数都放入全局脚本中......只是不要将它们全部包含在document.ready函数中。
他们的观点是每个页面加载都必须搜索所有元素;即使它们不存在或不需要该页面。
而在上面发布的示例中并非如此。