在 document.ready 上执行 $('#someId').click(function() 是否昂贵?
Is doing $('#someId').click(function() on document.ready into thin air expensive?
我的网站有大约 25-30 个不同的页面(页面类型/模板,真的,您可能明白了)。
对于其中的每一个,我都在 $(document).ready(function() ...);
上连接了一些东西,我只是想知道是否所有这些函数都可以放在同一个 .js 文件中,这意味着它们中的许多将白白执行,因为我挂钩平均每页 1-2 次锚点点击 = 50 个操作被挂钩,但对于任何给定页面只有大约 2 个有效。
希望你能关注。为清楚起见,这里有一些示例代码。
在同一个文件中,我有很多这样的文件,但 ID 不同或 类 被连接
$(document).ready(function(){
$('#options-toggler').click(function() {
$('#options').toggle(200);
return false;
});
});
....
这里的要点是我有大约 50 个类似上面的函数,设置在同一个文件中,该文件加载到您访问的每个页面上,但在任何给定页面上,只有 1-2 个元素连接起来。
这是不好的做法吗?如果是这样,还有什么选择?我无法想象每个模板有一个 .js 文件,但请告诉我最佳实践是什么。
如果您需要更多信息,请在评论中告诉我。
编辑
上面的文字可能还不清楚,但该站点是在 Python 中实现的,而不是 javascript。使用 Javascript 我做一些简单的事情,比如更新计数器,将保存发送到服务器等。我只看到使用 Javascript 框架的开销,正如这个问题的至少两个答案所建议的那样。
更新:
如果您不喜欢 angular 或 ember 等框架,请尝试使用 require-js,它将帮助您以模块化方式加载您想要的内容,这样您就可以只加载您想要的那些挂钩!
这是不好的做法吗?
如果你不使用框架或模块化脚本加载(要求)你没有太多选择
如果是这样,还有什么选择?
使用框架或模块化脚本加载!
您应该尝试使用 ember.js 或 angular.js,基本上是任何框架。你已经在使用它们了吗?
在不使用任何框架的情况下使用纯 javascript 的 25-30 个不同页面将是一种极其糟糕的体验。
P.S。 => 我在没有任何框架的情况下使用普通的 javsacript 完成了整个在线购物网站,这太可怕了,有太多重复的代码,调试、增强和一切都很困难!一旦我学会了 ember 我感到很欣慰!
除非您想转移到像 React or Angular 这样的结构化框架,否则您可以将每个页面单独 "hookups" 放入 HTML 中的 <script>
标记中。
这对于小型网站来说通常就足够了,但是一旦你变大了,你肯定想要实现某种框架。
您可以部分模块化,例如,如下所示
main.js
function initializePageOne(){
$(document).ready(function(){
$('#options-toggler').click(function() {
$('#options').toggle(200);
return false;
});
});
//Other initialization stuffs relevant to page one
}
function initializePageTwo(){
$(document).ready(function(){
$('#options-toggler2').click(function() {
$('#options').toggle(200);
return false;
});
});
//Other initialization stuffs relevant to page two
}
然后在page1.html
中放入,
//reference to main.js
<script type="text/javascript">
initializePageOne();
</script>
对于page2.html
//reference to main.js
<script type="text/javascript">
initializePageTwo();
</script>
这样代码都在main.js
,但是初始化是页面特定的
希望这对您有所帮助
我的网站有大约 25-30 个不同的页面(页面类型/模板,真的,您可能明白了)。
对于其中的每一个,我都在 $(document).ready(function() ...);
上连接了一些东西,我只是想知道是否所有这些函数都可以放在同一个 .js 文件中,这意味着它们中的许多将白白执行,因为我挂钩平均每页 1-2 次锚点点击 = 50 个操作被挂钩,但对于任何给定页面只有大约 2 个有效。
希望你能关注。为清楚起见,这里有一些示例代码。
在同一个文件中,我有很多这样的文件,但 ID 不同或 类 被连接
$(document).ready(function(){
$('#options-toggler').click(function() {
$('#options').toggle(200);
return false;
});
});
....
这里的要点是我有大约 50 个类似上面的函数,设置在同一个文件中,该文件加载到您访问的每个页面上,但在任何给定页面上,只有 1-2 个元素连接起来。
这是不好的做法吗?如果是这样,还有什么选择?我无法想象每个模板有一个 .js 文件,但请告诉我最佳实践是什么。
如果您需要更多信息,请在评论中告诉我。
编辑 上面的文字可能还不清楚,但该站点是在 Python 中实现的,而不是 javascript。使用 Javascript 我做一些简单的事情,比如更新计数器,将保存发送到服务器等。我只看到使用 Javascript 框架的开销,正如这个问题的至少两个答案所建议的那样。
更新: 如果您不喜欢 angular 或 ember 等框架,请尝试使用 require-js,它将帮助您以模块化方式加载您想要的内容,这样您就可以只加载您想要的那些挂钩!
这是不好的做法吗?
如果你不使用框架或模块化脚本加载(要求)你没有太多选择
如果是这样,还有什么选择? 使用框架或模块化脚本加载!
您应该尝试使用 ember.js 或 angular.js,基本上是任何框架。你已经在使用它们了吗?
在不使用任何框架的情况下使用纯 javascript 的 25-30 个不同页面将是一种极其糟糕的体验。
P.S。 => 我在没有任何框架的情况下使用普通的 javsacript 完成了整个在线购物网站,这太可怕了,有太多重复的代码,调试、增强和一切都很困难!一旦我学会了 ember 我感到很欣慰!
除非您想转移到像 React or Angular 这样的结构化框架,否则您可以将每个页面单独 "hookups" 放入 HTML 中的 <script>
标记中。
这对于小型网站来说通常就足够了,但是一旦你变大了,你肯定想要实现某种框架。
您可以部分模块化,例如,如下所示
main.js
function initializePageOne(){
$(document).ready(function(){
$('#options-toggler').click(function() {
$('#options').toggle(200);
return false;
});
});
//Other initialization stuffs relevant to page one
}
function initializePageTwo(){
$(document).ready(function(){
$('#options-toggler2').click(function() {
$('#options').toggle(200);
return false;
});
});
//Other initialization stuffs relevant to page two
}
然后在page1.html
中放入,
//reference to main.js
<script type="text/javascript">
initializePageOne();
</script>
对于page2.html
//reference to main.js
<script type="text/javascript">
initializePageTwo();
</script>
这样代码都在main.js
,但是初始化是页面特定的
希望这对您有所帮助