需要有关处理大型javascript文件的建议

时间:2009-11-09 11:38:12

标签: javascript

我的应用程序有大约2000行javascript代码。很多这是用户交互/ jQuery。别担心,一切正常:)

但是跟踪代码库变得越来越困难。所以我把文件分成了五个文件。

我认为如果我加载所有文件,它们都驻留在内存中,并且可以相互通信。但它看起来不像。因为,在文件A中,我有var currentPage = getURLvar('slpage');,而在文件B中我有if ( currentPage == 'someName')

但是文件B无法识别变量currentPage。

此外,我在文件C中有som通用脚本,文件A和B可以使用。但我想这不可能解决问题吗?

非常感谢任何建议。

更新

我的javascript开头是这样的:

// FILE A
jQuery(document).ready(function() {

  var currentPage = getURLvar('slpage');

  if ( (currentPage == 'Aa') || (currentPage == 'Bb') ) { 
    init_AA();
  } 
  else if ( (currentPage == 'Cc') || (currentPage == 'Dd') ) {
    init_BB();    
  } else if ( (currentPage == 'Ee') || (currentPage == 'Ff') ) {
    init_CC();    
  }
  (...)

// FILE B
  function init_AA()
  { 
    (...)
  }

  function getURLvar(name)
  {
     //Gets the URL and returns the value of specified paramter.
  }

1 个答案:

答案 0 :(得分:4)

您可以在其他文件中访问脚本的某些部分。你遇到的问题听起来像是一个范围界定。

如果您的变量位于全局命名空间(这不是一个好主意),那么您将能够像您尝试的那样直接访问它。

或者,如果您的变量作用于方法内部,则只能访问该方法。

为了公开你想要的变量,我会为代码创建一个通用的命名空间,并将你的分离的Javascript放入相关的命名空间。

以下是一些资源以获取更多信息:

http://www.dustindiaz.com/namespace-your-javascript/

http://snook.ca/archives/javascript/javascript_name

<强>更新

根据你发布的代码,你可以简单地将变量decleration移到anonymouse函数的范围之外。

 var currentPage;

 jQuery(document).ready(function() {

 currentPage = getURLvar('slpage');
 ...