2012-07-29 173 views
0

我正在完成我的项目,看到我在每个页面上都有很多JavaScript代码。它不包含在“.js”文件中,而是在页面中编码。我认为这是一个糟糕的主意,所以现在我试图将它们全部放在一个.js文件中,并将其包含在每个页面中。包括javascript文件

我现在面临的唯一问题是:一些函数只在特定页面上调用,并且取决于jquery插件的包含。但并非所有页面都需要插件。

举例: 在主页上我需要产业链的国家的Dropbox与Dropbox的城市,所以我需要的jQuery的jchained.js插件。我需要使用的代码是:

$(function(){ 
    $("#city").chained("#country"); 
}); 

当我添加此功能可将.js文件,我打开一个网页,我不需要链投寄箱我得到一个逻辑错误:

TypeError: $("#city").chained is not a function

所以,如果我正确地理解这一点,为了使用一个.js文件与我所有不同的功能用于不同的插件,我需要包括所有插件到所有页面?

感谢您的想法&帮助。

+0

你为什么不拆功能成几个文件?把与JQuery相关的代码放在一个文件中,其他地方的其他代码可以避免这些错误。也许更细粒度会很好。这取决于你有多少代码以及它的写法。 – toniedzwiedz 2012-07-29 17:53:01

+0

@Tom:这不会造成很多“.js”文件吗?我需要为每个函数提供一个分离的文件,并且我为不同的插件提供了很多功能。 – moonwalker 2012-07-29 17:55:34

+0

我不知道,我还没有看到代码。如果你记得有关问题的分离,这应该不成问题。如果是这样,JS可能需要大量的重构。 – toniedzwiedz 2012-07-29 17:56:54

回答

1

就我个人而言,我不认为你应该担心包含很多.js文件,这是网站开发的一部分。另一种选择,虽然稍微繁琐,你可以做一个检查存在的功能(如果该插件的.js已列入),然后调用它,如果它:

if(typeof yourFunctionName == 'function') { 
    yourFunctionName(); 
} 
+0

我不确定“不担心包含大量.js文件”部分。更多独立的JS文件意味着更多的请求 - 这意味着更慢的页面加载,特别是在带宽有限的设备(如移动设备)上。我会将所有这些JS文件连接成一个用于生产环境的文件,以便只需要一个请求。我也会缩小那个文件。 – redhotvengeance 2012-07-29 18:07:05

+0

@ilollar:的确是我的观点。但是如果我只使用一个文件,我需要在我的所有页面上包含所有使用的插件。 – moonwalker 2012-07-29 18:09:33

+2

@moonwalker是的,但是如果所有页面只有一个连接并缩小的JS文件,那么它会在第一次加载页面后被缓存,而对于其余的页面并不真正担心。或者,您可以为每个页面创建一个主JS文件,将共享功能分离为其他JS文件,并使用[browserify](https://github.com/substack/node-browserify)之类的“require”必要项代码在每个主页JS中。 – redhotvengeance 2012-07-29 18:14:28

1

它完全取决于代码的结构或当前代码的复杂程度。

一个直接的解决方案将是,

  1. 给一个ID,每一个页面(可能是身体上的标签)。
  2. 将所有代码放在一个外部JavaScript文件中。
  3. 只有在该body元素上需要id时才执行该特定页面的代码。 是这样的:($( '身体')ATTR( '身份证')== “家”)

    如果{ /*添加主页JS这里* /}

你可以试试这个。

纠正我,如果我错了。

+0

好主意。但是我将不得不去寻找肖恩给出的答案。谢谢你的帮助! – moonwalker 2012-07-29 18:07:48