我正在构建一个由组件组成的站点。定义为一组特定的 HTML、CSS 和 jQuery 的组件。该站点的每个页面都由许多组件组成。
根据最佳实践,我们将 javascript 块放在页面底部。我们加载所需的 .js 文件,然后我计划调用所需的函数:
doThisThing();
doThatThing();
假设我有组件 X。只要该组件出现在呈现的页面上,我就想调用一个函数。从 jQuery 的角度来看,处理这个问题的理想方法是什么?一些选项:
1)无论组件是否在页面上,始终调用该函数:
$('.componentX').doYourThing()
这很简单,因为我们只需要一个通用的 jQuery 函数调用块。但是在搜索 DOM 以寻找可能不存在的东西时,性能会受到轻微影响。
2)将调用附加到组件本身:
<div id="componentX">my component</div>
<script>$('.componentX').doYourThing()</script>
这很好,因为它本身包含同一组件中的标记和 .js 调用。缺点?
3) 将我们的组件架构与后端系统集成,以允许在 .js 块中实例化组件。换句话说,它会检查组件是否放置在页面模板上,如果是,则将其依赖的 js 函数调用添加到主脚本块中。
4)我应该考虑的其他选择?
更新:
根据kemp的回答,我想我应该澄清一下。我们所有的 jQuery 函数都将打包到一个大的压缩 .js 文件中,因此就服务器命中而言,它们都是一样的。我对如何在单个页面模板的上下文中最好地处理页面上每个组件的所有单个函数调用更感兴趣。
例如,组件 X 可能会在 90% 的页面上使用。因此,为其他 10% 的页面调用 jquery 函数似乎没什么大不了的。
但是,组件 Y 可能仅用于所有页面的 5%。我可能不想在 95% 的情况下在每一页上调用 jquery 函数,这是不必要的。
另一种情况可能会使事情变得更加复杂:组件 Z 可能在 100% 的所有页面上使用一次,但在 5% 的页面上使用两次。