如何/何时/何地包含外部JavaScript

Ala*_*tis 15 javascript architecture jquery

我正在寻找关于保持我的JavaScript(jQuery)函数的最佳方法的一些建议.

我在MVC/razor开发,因此有一个布局页面.我在这里包含了我的jQuery库和外部JavaScript文件,因此它可以在每个页面中使用.

这很好用,但我现在非常清楚我在每页都添加了近300行JS,其中一半可用于其中任何一页.

一个函数不在外部文件中,而是位于HTML内部,因为我需要使用我的剃刀代码中设置的变量.

关于这种安排,我有几个问题:

  • 当使用使用razor设置的变量时,将JS放在HTML中通常是可接受的吗?似乎没有一种将变量传递到外部js文件的简洁方法
  • 我应该将我的功能拆分为单个JS文件,并且只包括站点中每个页面所需的内容吗?
  • 如果我将它们分成多个文件,那么jQuery的工作方式如何(document).ready呢?如果要使用我所包含的所有JavaScript,是否需要使用它?

我相信这不仅仅是一个黑色和白色的答案,而是我想在继续之前考虑我的所有选择.即使它工作正常,我也不禁觉得有更好/更清洁的方式.

cow*_*wls 12

记住,一旦用户登陆您的主页并加载javascript文件,它将被缓存在他们的浏览器中,以便后续页面不会再次下载Javascript.

我肯定会将js分开,你可以在每个页面上都有一个片段,用于初始化该特定视图所需的JS.在需要运行JS的视图中添加如下所示的内容

$(document).ready(function() {
    mysite.mypage();
});
Run Code Online (Sandbox Code Playgroud)

然后可以在外部JS文件中定义函数mysite.mypage().300线不是世界末日,我想说它可能为时尚早,无法对优化感到担忧.

您可以随时查看缩小JS文件以减小大小.一个快速简便的方法是:

http://www.minifyjavascript.com/

  • 谢谢你 - 部署时所有代码都缩小了,加上我没有考虑缓存(如果我使用4个外部文件而不是1个,那么更多的是http请求). (2认同)
  • @Syon:你不是"在每个页面上运行所有这些功能",你只是包含它们.此外,将每个JS模块分隔在不同的文件中对于更好地管理文件是有意义的,但从性能上讲,我总是将所有内容放在一个文件中.用户加载一次,缓存将完成剩下的工作.可能最好的设置是,逻辑上将JS模块分隔在不同的文件中,并使用预处理器来连接和缩小您的javascript代码. (2认同)
  • @Syon:不要将代码分成更小的模块.您将**增加**开销:不同的javascript文件将导致更多HTTP请求和更多缓存中的文件.为您的整个域名提供一个javascript文件.所有可用的功能都将被缓存.没有开销. (2认同)